首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >performSegueWithIdentifier on didSelectRowAtIndexPath

performSegueWithIdentifier on didSelectRowAtIndexPath
EN

Stack Overflow用户
提问于 2013-08-02 02:27:00
回答 4查看 2.4K关注 0票数 0

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

谢谢-

代码语言:javascript
复制
- (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];
  }

}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-02 03:15:18

首先尝试另一种方法,但是如果您确实需要一个指向新视图控制器的维护指针,则可以尝试这种方法。这应该只执行一次segue,创建对视图控制器的引用,然后手动将其推送到导航控制器中。

重写视图控制器方法:

代码语言:javascript
复制
- (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

}

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

票数 0
EN

Stack Overflow用户

发布于 2013-08-02 03:03:56

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

重写视图控制器方法:

代码语言:javascript
复制
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

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

}

此方法的默认实现不起任何作用。当您的视图控制器需要将相关数据传递给新的视图控制器时,它将重写此方法。segue对象描述转换,并包含对包含在segue中的两个视图控制器的引用。

票数 0
EN

Stack Overflow用户

发布于 2013-08-02 03:06:50

您不需要每次都为每一行采取新的视图控制器,除非和直到您希望它自定义。这将使大量的视图控制器在故事板上。

因此,只需命令将segue从控制器A拖动到B。例如:如果A是tableViewController,B是简单的VC,其中显示表的行数据,那么命令拖放从整个tableViewController拖到B。现在,这将作为只有一个标识符的公共segue。

所以在你的代码中:

代码语言:javascript
复制
- (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];

}

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18007774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档