Я создал UIbutton программно следующим образом:
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self action:@selector(hideOrShowWithButtonId:)forControlEvents:UIControlEventTouchDown];
Цель этой кнопки состоит в том, чтобы при нажатии содержимое раздела в пользовательском представлении исчезало, а при нажатии на него назад,содержимое возвращается.Поэтому, когда эта кнопка нажата, она вызывает следующую функцию: (ПРИМЕЧАНИЕ: 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) выходит со значением @ "Показать", но при повторном нажатии кнопки она имеет значение @ "Скрыть". ЗначениеСтрока self.taxibutton не меняется.Таким образом, функция может только скрыть содержимое раздела и не показывать его снова.Есть причина, почему это происходит?Есть ли более простой способ выполнить эту задачу - скрыть / показать содержимое определенного раздела в UItableView?