基本上,我正在使用prepareForSegue方法转换到我的故事板中的另一个视图,我的视图必须嵌入导航控制器才能显示导航栏,所以我以这样的方式传递变量:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"exploreAddSelected"]){
UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
AddTableViewController *controller = (AddTableViewController *)navController.topViewController;
controller.tagName = tagName;
}
}
我的问题是我需要能够在使用prepareForSegue方法时在实际视图控制器中设置一些方法值,正如您在使用pushViewController时所做的那样:
DetailViewController *detailViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];
detailViewController.tagName = tagName;
[detailViewController setCurrentHashtag:nil];
[navigationController pushViewController:self.detailViewController animated:YES];
我需要能够设置“setCurrentHashtag”方法,该方法在视图控制器中声明segue“exploreAddSelected”转到。我该怎么做?
答案 0 :(得分:0)
答案实际上是非常明显的,但是我自己要问这个问题才能实现答案。
您可以设置:
controller.currentHashtag = nil;
其中currentHashtag是视图控制器中新声明的实例。 然后在实际的视图控制器集中:
[self setCurrentHashtag:currentHashtag];
答案 1 :(得分:0)
只需将currentHashtag添加到方法中即可。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"exploreAddSelected"]){
UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
AddTableViewController *controller = (AddTableViewController *)navController.topViewController;
controller.tagName = tagName;
[controller setCurrentHashTag:nil]; //add this line
}
}
我不确定你在这做什么。如果segue直接指向视图控制器(也不通过另一个导航控制器),则不需要映射到topviewcontroller,而是直接使用destinationcontroller。