didSelectRowAtIndexPath上的performSegueWithIdentifier

时间:2013-08-02 02:27:01

标签: ios cocoa-touch segue

每次用户点击任何单元格时都会使用此代码一次又一次地执行segue,我想知道如何在切换视图时跟踪加载的视图以保留数据,而不是无限的新viewcontroler。

谢谢 -

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
  if (indexPath.row == 0) {
    [self.navigationController
     performSegueWithIdentifier:@"rep" sender:self];
  } else if (indexPath.row == 1) {
    [self.navigationController
     performSegueWithIdentifier:@"rep1" sender:self];
  }

}

4 个答案:

答案 0 :(得分:0)

维护对视图控制器的引用的另一种方法是在seque之前自定义视图控制器。

覆盖视图控制器方法:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

     MyViewController *targetController = (MyViewController*)segue.destinationViewController;
     targetController.customVar = 1;

}

此方法的默认实现不执行任何操作。当需要将相关数据传递给新视图控制器时,视图控制器会覆盖此方法。 segue对象描述了转换,并包含对segue中涉及的两个视图控制器的引用。

答案 1 :(得分:0)

除非您想要自定义,否则您不需要每次都为每一行都使用新的View控制器。这将在故事板上创建大量的视图控制器。

所以,只需命令将segue从控制器A拖到B.示例:如果A是tableViewController而B是简单的VC,你在那里显示表行的数据然后命令从整个tableViewController拖动到B.现在这将作为常见的segue只有一个标识符。

所以在你的代码中:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

//Set your B's label/property etc to cell's data or anything so that it will reflect in B.
B.label = cell.text;   
[self performSegueWithIdentifier:@"Identifier" sender:self];

}

希望这有帮助。

答案 2 :(得分:0)

首先尝试我的其他方法,但如果你真的需要维护一个指向新视图控制器的指针,你可以尝试这种方法。这应该执行一次segue,创建对视图控制器的引用,随后将其手动推入导航控制器。

覆盖视图控制器方法:

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender{

     if(self.myViewController == nil){
          return YES;
     }else{
          [self.navigationController pushViewController:self.myViewController animated:YES]
     }
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

     self.myViewController = (MyViewController*)segue.destinationViewController;
     self.myViewController.customVar = 1;  //perform initial customization

}

我知道什么,我从未使用过故事板......

答案 3 :(得分:-2)

我认为你可以保留新的viewController指针。然后下次你可以像这样使用它:

[self.navigationController pushViewController:thePointer animated:YES]

我很少使用Storyboard。所以我不确定它会起作用。