在每次用户单击任何单元格时,使用此代码将一次又一次地执行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];
}
}发布于 2013-08-02 03:15:18
首先尝试另一种方法,但是如果您确实需要一个指向新视图控制器的维护指针,则可以尝试这种方法。这应该只执行一次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-02 03:03:56
也许维护对视图控制器的引用的另一种方法是在seque之前自定义视图控制器。
重写视图控制器方法:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
MyViewController *targetController = (MyViewController*)segue.destinationViewController;
targetController.customVar = 1;
}此方法的默认实现不起任何作用。当您的视图控制器需要将相关数据传递给新的视图控制器时,它将重写此方法。segue对象描述转换,并包含对包含在segue中的两个视图控制器的引用。
发布于 2013-08-02 03:06:50
您不需要每次都为每一行采取新的视图控制器,除非和直到您希望它自定义。这将使大量的视图控制器在故事板上。
因此,只需命令将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];
}希望这能有所帮助。
https://stackoverflow.com/questions/18007774
复制相似问题