0

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

谢谢 -

- (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

4 回答 4

0

也许维护对视图控制器的引用的替代方法是在排序之前自定义视图控制器。

覆盖视图控制器方法:

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

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

}

此方法的默认实现什么也不做。当您的视图控制器需要将相关数据传递给新的视图控制器时,它会覆盖此方法。segue 对象描述了转换并包括对 segue 中涉及的两个视图控制器的引用。

于 2013-08-02T03:03:56.467 回答
0

你不需要每次都为每一行使用新的视图控制器,除非你想要定制它。这将使情节提要上的大量视图控制器。

因此,只需将命令从控制器 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];

}

希望这可以帮助。

于 2013-08-02T03:06:50.503 回答
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

}

不过我知道什么,我从来没有使用过故事板......

于 2013-08-02T03:15:18.493 回答
-2

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

[self.navigationController pushViewController:thePointer animated:YES]

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

于 2013-08-02T02:41:35.993 回答