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

标签 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方法调用模态视图 Controller 的代码

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

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

但是我得到的错误是

“应用程序试图以模态方式呈现事件 Controller ”

我需要在按下按钮时显示模态视图 Controller ,但该按钮是通过编程方式创建的。该按钮在 ScrollView 中重复出现。

还有其他获取模态视图 Controller 的方法吗?

提前致谢......

最佳答案

您不应在prepareForSegue 方法中呈现 addController

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

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

你应该在你的 xib 文件中创建 seque 然后当你调用下面的行时:

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

应用程序将根据您的 xib 创建的 segue 显示目标 ViewController。所以没有必要在 prepareForSegue 方法中调用 presentViewController

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

此外,即使您不想在 xib 中创建 segue。所以我认为唯一的方法是呈现模态视图 Controller 。

关于ios - 使用以编程方式创建的按钮连接 segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24593157/

相关文章:

ios - 这里有一些可选的错误吗?

objective-c - 导入 Cocoalibspotify

ios - 从 NSNumber 获取 CGFloat 的最常见和正确的做法是什么?

swift - 我设法转到一个空白的 View Controller 。我该如何返回?

iphone - 以 Storyboard风格呈现没有动画的模态视图 Controller

ios - 在 iOS 上删除文件夹中的所有文件

ios - UITableView 在我的自定义单元 UILabel 和重用问题中无法正确显示数据

iphone - iOS 能够在模拟器上读取 plist 文件,但不能在设备上读取

iphone - 如何使模态视图可滚动?

swift - UIPickerView 无需 segue 发送数据