在以下设置中,Button 1
拨打First VC
和Button 2
来电Second VC
目前,我使用以下代码通过点按SecondVC
来致电Button 2
。
MainVC.m
@implementation MainVC()
....
UINavigationController *navController = [self.childViewControllers objectAtIndex:0];
SecondVC *secondVC = [self.storyboard instantiateViewControllerWithIdentifier:@"second"];
[navController pushViewController:secondVC animated:YES];
上面的代码显示SecondVC
就好了。但是,在First VC
中有一些语句需要在“第二个VC”出现之前执行,这些语句被跳过!
我在First VC
内-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
执行这些语句。在Next
中点按First VC
按钮后,所有语句都会执行,因为它会在呈现prepareForSegue
之前触发SecondVC
。使用上面的代码时会跳过此步骤。
额外信息:
A)虽然我的应用中的Navigation Controller
,Main VC
未在我的应用中显示导航栏。我相信这会对抗HIG在iPhone上显示两个导航栏。我在这里展示了识别主VC
B)用户填写的FirstVC中有textFields。如果我只是复制代码,它会从textFields.text中读取并保存数据吗?
问题:在prepareForSegue
点击First VC
时,如何从Button 2
致电MainVC
?还是有另一种方法吗?
答案 0 :(得分:0)
您可以尝试以下内容:
UINavigationController *navController = [[self childViewControllers] objectAtIndex:0];
UIViewController *vc = [navController topViewController]
if ([vc isKindOfClass:[FirstVC class]]) {
FirstVC *firstVC = (FirstVC *)vc;
SecondVC *secondVC = [[self storyboard] instantiateViewControllerWithIdentifier:@"second"];
// Copy and read data from [[firstVC textField] text] to secondVC.
[navController pushViewController:secondVC animated:YES];
}