首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以编程方式指定segue (不执行segue)?

如何以编程方式指定segue (不执行segue)?
EN

Stack Overflow用户
提问于 2013-06-01 16:43:13
回答 1查看 503关注 0票数 0
代码语言:javascript
复制
 AView.m
       UIButton *btn = [[UIButton alloc]initWithFrame()];
       [btn addTarget:self action:@selectior(perpareForSegue:sender:) forControlEvents:UIControlEventTouchUpInside];
       [self.view addSubview:btn];


-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
       //I want to get destinationViewController of segue with identifier"toNextView" 
       // and then perform the segue
       // Difficulties that I encounter is that I have a NSInvalidArgumentException
       // Is that mean the view controller doesn't know the existence of the segue?
       // I have connected two controller with a segue
}

我想获得带有标识符“toNextView”的segue的destinationViewController,然后执行segue遇到的困难是,我有一个NSInvalidArgumentException,这是否意味着视图控制器不知道segue的存在?我已经用一个网段连接了两个控制器。

EN

回答 1

Stack Overflow用户

发布于 2013-06-01 17:15:57

看一看class reference of UIStoryboardSegue

当segue被触发时,故事板运行时调用准备triggered :sender:方法。它并不意味着要被调用来执行段。

下面是来自类引用的解释:

当段被触发时,但在视觉转换发生之前,故事板运行时调用当前视图控制器的

:segue::method方法,以便它可以将任何需要的数据传递给即将显示的视图控制器。

从类引用中:

如果需要,您仍然可以使用UIViewController的performSegueWithIdentifier:

:方法以编程方式启动段。您可以这样做,以便从以编程方式添加的源启动段,因此在Interface Builder中不可用。

因此,只需指定按钮的选择器,然后在选择器中调用performSegueWithIdentifier:sender: method。

代码语言:javascript
复制
[btn addTarget:self action:@selector(whateverAction) forControlEvents:UIControlEventTouchUpInside];

- (void)whateverAction {
    [self performSegueWithIdentifier:@"toNextView" sender:nil];
}

如果您想要将一个对象传递给segue的目标视图控制器,这就是准备for :sender: method发挥作用的地方,如类引用中所述,例如:

代码语言:javascript
复制
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"toNextView"]) {
        DestinationViewController *vc = (DestinationViewController *)[segue destinationViewController];
        //do whatever you want to do with vc, including passing of data, setting property, etc.
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16870854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档