在调用prepareforsegue之前调用相同的视图控制器

时间:2014-10-02 18:15:32

标签: ios objective-c iphone xcode6

大家好我是Obj c编程的初学者,我从tableviewcell创建了一个“self segue”(segue到同一个视图控制器)。现在我的问题是,我在prepareForSegue方法中设置了一些参数,但不知何故segue已经在调用此方法之前发生(我甚至没有调用“performSeguewithIdentifier”)。我知道这可能是因为segue与细胞相关联。但我没有找到其他方法来创造一个“自我”的

请帮助。我正在使用xcode6 ..

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{ 
 _selctdObj =  [avObjArray objectAtIndex:indexPath.row];
 if([_selctdObj isContainer])
  {
     [self performSegueWithIdentifier:@"isContainerSegue" sender:self];
  } 
 else
  {
   [self performSegueWithIdentifier:@"isItemSegue" sender:self];
  }
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"isContainerSegue"]) {
    // Get destination view
    serverBrowseVC *sbvc = [segue destinationViewController];
    [sbvc setServerSelected:_serverSelected];
    [sbvc setBrowseObjID:_selctdObj];

 }
}

现在总是“isContainerSegue”被执行,即使对象不是容器。我也试过评论

//[self performSegueWithIdentifier:@"isContainerSegue" sender:self];

但每次“isContainerSegue”都会被执行..

1 个答案:

答案 0 :(得分:0)

你说你没有调用performSegueWithIdentifier,但是你是。如果你已从细胞中连接了segue,那么你就不应该这样做。你也不应该实现didSelectRowAtIndexPath,只需要prepareForSegue。您可以从prepareForSegue:sender:的sender参数(发件人将是单元格)获取indexPath。如果您遇到“if [_selctdObj isContainer]”子句的问题,则需要发布isContainer的内容。