使用 performSegue 将数据传递给目标视图控制器
Posted
技术标签:
【中文标题】使用 performSegue 将数据传递给目标视图控制器【英文标题】:Passing data to destination view controller with performSegue 【发布时间】:2015-06-25 01:02:34 【问题描述】:所以我知道,如果有一个通过情节提要设置和激活的 segue,可以使用prepareForSegue
方法将数据传递给目标视图控制器。
我想知道如果使用performSegueWithIdentifier
方法,是否有办法做到这一点?似乎 prepareForSegue
方法仅在使用情节提要激活 segue 时才被调用,而不是使用 performSegue。
一个特殊的问题是我无法访问UIStoryboardSegue
(它不是performSegue
中的参数,因为它在prepareForSegue
中),因此也无法访问目标VC。
【问题讨论】:
您的问题似乎不正确 - 在您调用performSegueWithIdentifier:sender:
后,您的视图控制器将收到 prepareForSegue:sender:
消息。 UIStoryboardSegue
对象将具有属性 destinationViewController
,因此您可以获得对目标视图控制器的引用。
How to pass prepareForSegue: an object 的可能重复项
@RoboticCat 好的,是的,你是对的,它正在调用prepareForSegue:sender:
我做错了测试,我的错。有没有办法删除问题?由于这个问题现在无关紧要
@user3809369:一旦写出答案,就无法删除问题
【参考方案1】:
答案在 *** 中。 How to pass prepareForSegue: an object
// When any of buttons are pressed, push the next view
- (IBAction)buttonPressed:(id)sender
[self performSegueWithIdentifier:@"MySegue" sender:sender];
// This will get called too before the view appears
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
if ([[segue identifier] isEqualToString:@"MySegue"])
// Get destination view
SecondView *vc = [segue destinationViewController];
// Get button tag number (or do whatever you need to do here, based on your object
NSInteger tagIndex = [(UIButton *)sender tag];
// Pass the information to your destination view
[vc setSelectedButton:tagIndex];
【讨论】:
以上是关于使用 performSegue 将数据传递给目标视图控制器的主要内容,如果未能解决你的问题,请参考以下文章