使用以编程方式创建的按钮连接segue

时间:2014-07-06 06:02:15

标签: ios objective-c segue

我在viewdidload方法中创建了按钮:

    UIButton * button2 = [UIButton buttonWithType:UIButtonTypeCustom];
    [button2 addTarget:self action:@selector(showVideo:)forControlEvents:UIControlEventTouchUpInside];

在按钮操作方法中,我以编程方式调用segue:

    - (void) showVideo:(id)sender {
       [self performSegueWithIdentifier: @"MySegue" sender: self];  
     }

准备segue方法调用模态视图控制器的代码

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
        if ([[segue identifier] isEqualToString:@"MySegue"])
          {
            Xen_VideoViewController *addController = [segue destinationViewController];
            [self presentViewController:addController animated:YES completion: nil];
          }
    }

我引用链接[link]:Creating a segue programmatically

但我收到错误

"应用程序尝试以模态方式呈现一个活动控制器"

我需要在按下按钮时显示模态视图控制器,但按钮是以编程方式创建的。滚动视图中重复了该按钮。

获取模态视图控制器的任何其他方法?

提前致谢......

1 个答案:

答案 0 :(得分:1)

present方法不应addController prepareForSegue

我指的是您自己分享的链接:

https://stackoverflow.com/a/17012857/1939409

您应该在seque文件中创建xib,然后在下面的线路中致电:

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

该应用将根据您创建的xib ViewController显示目标segue。因此,无需在presentViewController方法中调用prepareForSegue

如果您已经在xib中创建了segue,那么只需删除prepareForSegue方法,并且每件事都应该没问题。

如果你甚至,也不想在你的xib中创建segue。所以我认为唯一的方法是提供模态视图控制器。