在准备中寻找无限循环

时间:2014-07-18 04:17:27

标签: ios objective-c segue

我构建了一个表视图,其中一行需要转到特殊的视图控制器。我在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行时,我看不到视图中的任何变化,并且控制台打印出一个无限的蒸汽"关于"。任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

您不得在prepareForSegue中执行segue。这是无限循环的来源。

如果此行尝试执行错误的segue,请使用shouldPerformSegue阻止它(现在您可以执行其他操作)。

答案 1 :(得分:0)

因为当aboutCat存在时,您还没有编写任何用于执行segue的代码

else if ([[segue identifier] isEqualToString:@"aboutCat"])
{
     // code for performing aboutcat
}