首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁止Storyboard Segue执行segue动作

禁止Storyboard Segue执行segue动作
EN

Stack Overflow用户
提问于 2012-08-23 01:04:08
回答 3查看 956关注 0票数 1

问题,我怎么才能拒绝故事板的出现呢?

上下文:--我在第一个视图控制器上有一个静态分组表视图,它是可见的(如果你愿意的话,主菜单)。

我故意提前向用户展示UI,让用户有机会进行交互并感知到快速的负载响应。其他可能正在导入数据的操作,例如,发生在后台操作队列上。事实上,我的大多数UI函数都已经准备好了,只要您看到它们,就可以马上运行。

特别是一个菜单项(表行),直到某些数据被导入时才准备好(当所有数据都准备好时,我会发送通知)。

虽然我可以删除这个动作的情节提要,但它让我思考如何阻止一个故事板触发,因为某个条件没有得到满足。

我可能会在实践中允许segue,并让目标视图控制器限制初始化,直到它收到它正在等待的通知。

但是一个人能以编程的方式拦截并阻止它吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-26 06:46:07

在iOS 6.0及更高版本中,您可以通过重写-UIViewController shouldPerformSegueWithIdentifier:-UIViewController:方法并返回NO,防止在通常触发它的操作发生后触发-UIViewController。

票数 3
EN

Stack Overflow用户

发布于 2012-08-23 02:25:51

您可以在其中使用来自控制器本身的segue,然后使用performSegueWithIdentifier执行segue,然后您可以测试这个特定的segue并决定是否执行。

票数 1
EN

Stack Overflow用户

发布于 2013-04-25 12:48:55

您可以像在UIStoryboardSegue的参考文献中所描述的那样,对其进行子类化。

一项可能的执行:

.h

代码语言:javascript
复制
@interface MYPushNoAnimationSegue : UIStoryboardSegue
@end

.m

代码语言:javascript
复制
#import "MYPushNoAnimationSegue.h"

@implementation MYPushNoAnimationSegue

- (void)perform {
    if (condition) {
        [[(UIViewController *)self.sourceViewController navigationController] pushViewController:self.destinationViewController animated:NO];
    }
}

@end

完成后,您可以在故事板中选择现有的segue,然后将其样式设置为定制,并在Attributes检查器中向Segue类输入MYPushNoAnimationSegue。

我知道很多时间过去了,也许你已经解决了,但它可能会帮助那些面临同样问题的人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12083415

复制
相关文章

相似问题

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