我已经在 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/