我似乎无法理解如何解决这个问题。我的主视图上有一个按钮。该视图包含容器视图。我想主视图上的按钮使容器视图segue到另一个视图。我已经为segue设置了一个标识符,它从containerView1到containerView2。这是推特。标识符是pushSegue。
在主视图上的按钮上我试过了:
- (IBAction)btnChangeLocation:(UIButton *)sender {
UIViewController *a = [[ContainerView1 alloc]init];
[a performSegueWithIdentifier:@"pushSegue" sender:nil];
}
我已经成功地从containerView1中执行了这个segue,只需放入其中,然后从那里执行segue。它工作得很好。
- (IBAction)testButton:(UIButton *)sender {
[self performSegueWithIdentifier:@"pushSegue" sender:nil];
}
但是,如果我想从主视图上的按钮触发containerView1上的segue,我该怎么办?
感谢。
编辑:
我还希望能够从容器视图中执行相同的segue,它位于容器视图中。
总结一下。
的MainView -----> ContainerView1 - > pushSegue ---> ContainerView2
ContaainerView1有一个subContainerView,它还有一个按钮,可以使ContainerView1进入ContainerView2。这个按钮和MainView上的按钮完全相同,只是来自不同的地点"。
编辑:添加了图片以帮助解释。 http://tinypic.com/r/maxpp2/8答案 0 :(得分:1)
使用UIViewController *a = [[ContainerView1 alloc]init];
实例化一个新的ContainerView1控制器。那对你没有帮助;您需要在已创建的实例上调用performSegueWithIdentifier:sender:
。
根据故事板和代码的设置方式,您需要找到一种方法来获取嵌入式视图控制器。
对于此设置:
您可以在主(托管)视图控制器中执行类似的操作:
@property (weak, nonatomic) IBOutlet UIView *childView;
@property (weak,nonatomic) UINavigationController *container;
...
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"embedContainer1"]) {
self.container = segue.destinationViewController;
}
}
-(IBAction)doIt:(id)sender {
[self.container.viewControllers[0] performSegueWithIdentifier:@"pushSegue" sender:nil];
}
通过实现prepareForSegue:sender:
,您可以获得对子视图控制器的引用;清洁然后通过childViewControllers
恕我直言的数组。