Saya membuat tombol UI secara terprogram dengan cara ini:
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self action:@selector(hideOrShowWithButtonId:)forControlEvents:UIControlEventTouchDown];
Tujuan dari tombol ini adalah ketika ditekan, konten bagian dalam tampilan yang sesuai akan hilang, dan ketika diklik kembali, konten akan muncul kembali. Jadi ketika tombol ini diklik, ia memanggil fungsi di bawah ini: (CATATAN: self.cinemaButton, self.taxiButton dan self.foodButton adalah STRINGS dan BUKAN BUTTONS)
-(void)hideOrShowWithButtonId:(id)sender;
{
NSArray *dummy=[[[NSArray alloc] initWithObjects:nil] autorelease];
NSArray *dummy2=[[NSArray alloc] initWithObjects:self.cinemaButton,self.taxiButton,self.foodButton,nil];
NSLog(@"%@",self.taxiButton);
if([[dummy2 objectAtIndex:[sender tag]]isEqual:@"Hide"])
{
NSLog(@"Want to hide");
[self.sections removeAllObjects];
switch ([sender tag]) {
case 0:
[self.sections addObject:dummy];
[self.sections addObject:self.taxiFavorite];
[self.sections addObject:self.foodFavorite];
[self.tableView reloadData];
self.cinemaButton=[NSString stringWithString:@"Show"];
break;
case 1:
[self.sections addObject:self.cinemaFavorite];
[self.sections addObject:dummy];
[self.sections addObject:self.foodFavorite];
[self.tableView reloadData];
self.taxiButton=[NSString stringWithString:@"Show"];
break;
case 2:
[self.sections addObject:self.cinemaFavorite];
[self.sections addObject:self.taxiFavorite];
[self.sections addObject:dummy];
[self.tableView reloadData];
self.foodButton=[NSString stringWithString:@"Show"];
break;
}
NSLog(@"%@",self.taxiButton);
}
else
{
NSLog(@"Want to show");
switch ([sender tag]) {
case 0:
[self.sections replaceObjectAtIndex:0 withObject:self.cinemaFavorite];
[self.tableView reloadData];
self.cinemaButton=[NSString stringWithString:@"Hide"];
break;
case 1:
[self.sections replaceObjectAtIndex:1 withObject:self.taxiFavorite];
[self.tableView reloadData];
self.taxiButton=[NSString stringWithString:@"Hide"];
break;
case 2:
[self.sections replaceObjectAtIndex:2 withObject:self.cinemaFavorite];
[self.tableView reloadData];
self.foodButton=[NSString stringWithString:@"Hide"];
break;
}
}
[dummy2 release];
NSLog(@"%@",self.taxiButton);
}
Masalah dengan fungsi ini adalah string (misalnya dalam kasus saya: self.taxi) keluar dengan nilai @"Tampilkan", tetapi ketika menekan tombol lagi, ia memiliki nilai @"Sembunyikan" Nilai dari string self.taxibutton tidak berubah. Jadi fungsinya hanya mampu menyembunyikan isi bagian tersebut dan tidak menampilkannya lagi. Adakah alasan mengapa hal ini terjadi? Apakah ada cara yang lebih mudah untuk melakukan tugas menyembunyikan/menampilkan konten bagian tertentu di UItableView?