我构建了一个表视图,其中一行需要转到特殊的视图控制器。我在prepareforsegue函数中构建了一个if语句来处理这个问题,但是我得到了一个无限循环。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSIndexPath *myIndexPath = [self.tableView
indexPathForSelectedRow];
long row = [myIndexPath row];
if([_categoryTitle[row] isEqualToString:@"About"]){
NSLog(@"ABOUT");
[self performSegueWithIdentifier:@"aboutCat" sender:self];
}
else if ([[segue identifier] isEqualToString:@"ShowLocationsTableView"])
{
NSLog(@"ELSE");
LocationsTableViewController *ViewController =
[segue destinationViewController];
ViewController.categoryDetailModel = @[_categoryTitle[row],
_categoryImages[row]];
}
}
当我点击about行时,我看不到视图中的任何变化,并且控制台打印出一个无限的蒸汽"关于"。任何想法如何解决这个问题?
答案 0 :(得分:3)
您不得在prepareForSegue
中执行segue。这是无限循环的来源。
如果此行尝试执行错误的segue,请使用shouldPerformSegue
阻止它(现在您可以执行其他操作)。
答案 1 :(得分:0)
因为当aboutCat
存在时,您还没有编写任何用于执行segue的代码
else if ([[segue identifier] isEqualToString:@"aboutCat"])
{
// code for performing aboutcat
}