通过Segue导航到下一个视图

时间:2015-04-08 09:16:05

标签: ios objective-c

点击按钮后,我希望用户导航到另一个视图。以下代码工作正常。但是,我想将一些值传递给下一个屏幕。我怎么想这样做?

- (IBAction)buttonClick:(id)sender {

        [self performSegueWithIdentifier:@"segueviewc" sender:self];

}

我也尝试了以下代码并且它可以工作,但页面导航两次到MyV viewcontroller。来自buttonClick事件和prepareForSegue方法。我该如何防止这种情况?

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {



MyV *myv = (MyV*) segue.destinationViewController;


myv.navigationItem.title=@"Hey";

myv.arr=data;

}

4 个答案:

答案 0 :(得分:0)

您不必在点击按钮时执行segue。如果您的按钮正在触发segue,它将自动执行。

删除行 -

[self performSegueWithIdentifier:@"segueviewc" sender:self];

来自您的方法 -

- (IBAction)buttonClick:(id)sender {

您还必须理想地检查正在执行的segue,以便您可以根据正在执行的导航进行编码...

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{


    if ([segue.idenifier isEqualToString:@"segueviewc"])
    {
            MyV *myv = (MyV*) segue.destinationViewController;
            myv.navigationItem.title=@"Hey";
            myv.arr=data;
    }

}

答案 1 :(得分:0)

打开故事板检查segue是否从按钮直接连接到下一个视图。如果是,您只需删除该行。

    [self performSegueWithIdentifier:@"segueviewc" sender:self];

我认为问题是,segue从按钮动作直接连接到下一个视图,在按钮动作中,你再次调用segue! 欢呼声

答案 2 :(得分:0)

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
      if ([segue.identifier isEqualToString:@"segueviewc"]) {
         MyV *myv = (MyV*)[self.storyboard instantiateViewControllerWithIdentifier:@"yourStoryboardID"];
         myv.navigationItem.title=@"Hey";
         myv.arr=data;
      }
 }

你不需要IBAction方法。

答案 3 :(得分:0)

有两种触发segue的方法: 1.您可以将其从按钮直接触发到新视图控制器 2.从一个视图控制器触发segue到第二个视图控制器。

我猜你是通过第一种方法连接它。因此,您不应该从IBAction触发它。