以编程方式执行Segue并将parameter passing到目标视图
在我的应用程序,我有一个button,执行segue编程:
- (void)myButtonMethod { //execute segue programmatically [self performSegueWithIdentifier: @"MySegue" sender: self]; }
我想知道是否有一种方法来引用目标视图并传递一些参数。
我知道在prepareForSegue
方法中,我可以参考它: myDestinationViewController *vc = [segue destinationViewController];
,但我不知道如何以编程方式执行segue。
你有什么想法?
谢谢,亚萨
更新:
我很抱歉这个问题! 我简单地发现,即使以编程方式调用segue, prepareForSegue
方法也会被调用,所以可以按照相同的方式传递参数。
答案只不过是如何触发赛格而已。
prepareForSegue:sender:
方法在任何情况下都被调用,这就是你传递参数的地方。
老问题,但这里是如何做你所问的代码。 在这种情况下,我将数据从表视图中选定的单元格传递到另一个视图控制器。
在trget视图的.h文件中:
@property(weak, nonatomic) NSObject* dataModel;
在.m文件中:
@synthesize dataModel;
在这种情况下, dataModel
可以是string
, int
或类似的,它是一个包含许多项目的模型
- (void)someMethod { [self performSegueWithIdentifier:@"loginMainSegue" sender:self]; }
要么…
- (void)someMethod { UIViewController *myController = [self.storyboard instantiateViewControllerWithIdentifier:@"HomeController"]; [self.navigationController pushViewController: myController animated:YES]; } - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if([segue.identifier isEqualToString:@"storyDetailsSegway"]) { UITableViewCell *cell = (UITableViewCell *) sender; NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; NSDictionary *storiesDict =[topStories objectAtIndex:[indexPath row]]; StoryModel *storyModel = [[StoryModel alloc] init]; storyModel = storiesDict; StoryDetails *controller = (StoryDetails *)segue.destinationViewController; controller.dataModel= storyModel; } }
我明白在一个地方执行segue的问题,并且保持状态发送参数来准备segue。
我想出了一个办法来做到这一点。 我已经添加了一个名为userInfoDict的属性使用一个类别ViewControllers。 我也覆盖执行与标识符segue,以这种方式,如果发件人是自我(指控制器本身)。 它将把这个userInfoDict传递给下一个ViewController。
这里不是传递整个UserInfoDict,而是可以传递特定的参数,作为发送者并相应地覆盖。
1件事你需要记住。 不要忘记在你的performSegue方法中调用超级方法。