ฉันสร้าง UIbutton โดยทางโปรแกรมด้วยวิธีนี้:
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self action:@selector(hideOrShowWithButtonId:)forControlEvents:UIControlEventTouchDown];
วัตถุประสงค์ของปุ่มนี้คือ เมื่อกด เนื้อหาของส่วนในมุมมอง uitableview จะหายไป และเมื่อคลิกกลับ เนื้อหาจะกลับมา ดังนั้นเมื่อคลิกปุ่มนี้ มันจะเรียกใช้ฟังก์ชันด้านล่าง: (หมายเหตุ: self.cinemaButton, self.taxiButton และ self.foodButton คือ STRINGS และไม่ใช่ 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);
}
ปัญหาเกี่ยวกับฟังก์ชันนี้คือสตริง (เช่นในกรณีของฉัน: self.taxi) กำลังออกด้วยค่า @"Show" แต่เมื่อกดปุ่มอีกครั้งจะมีค่าเป็น @"Hide" ค่าของ string self.taxibutton ไม่เปลี่ยนแปลง ดังนั้นฟังก์ชันจึงสามารถซ่อนเนื้อหาของส่วนนั้นได้เท่านั้นและไม่แสดงอีก มีเหตุผลใดที่ทำให้สิ่งนี้เกิดขึ้น? มีวิธีที่ง่ายกว่าในการดำเนินการซ่อน / แสดงเนื้อหาของส่วนใดส่วนหนึ่งใน UItableView หรือไม่