从容器视图的主视图执行segue

时间:2014-04-07 17:18:33

标签: objective-c

我似乎无法理解如何解决这个问题。我的主视图上有一个按钮。该视图包含容器视图。我想主视图上的按钮使容器视图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

Contaai​​nerView1有一个subContainerView,它还有一个按钮,可以使ContainerView1进入ContainerView2。这个按钮和MainView上的按钮完全相同,只是来自不同的地点"。

编辑:添加了图片以帮助解释。 http://tinypic.com/r/maxpp2/8

1 个答案:

答案 0 :(得分:1)

使用UIViewController *a = [[ContainerView1 alloc]init];实例化一个新的ContainerView1控制器。那对你没有帮助;您需要在已创建的实例上调用performSegueWithIdentifier:sender:

根据故事板和代码的设置方式,您需要找到一种方法来获取嵌入式视图控制器。

对于此设置: enter image description here

您可以在主(托管)视图控制器中执行类似的操作:

@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恕我直言的数组。