问题,我怎么才能拒绝故事板的出现呢?
上下文:--我在第一个视图控制器上有一个静态分组表视图,它是可见的(如果你愿意的话,主菜单)。
我故意提前向用户展示UI,让用户有机会进行交互并感知到快速的负载响应。其他可能正在导入数据的操作,例如,发生在后台操作队列上。事实上,我的大多数UI函数都已经准备好了,只要您看到它们,就可以马上运行。
特别是一个菜单项(表行),直到某些数据被导入时才准备好(当所有数据都准备好时,我会发送通知)。
虽然我可以删除这个动作的情节提要,但它让我思考如何阻止一个故事板触发,因为某个条件没有得到满足。
我可能会在实践中允许segue,并让目标视图控制器限制初始化,直到它收到它正在等待的通知。
但是一个人能以编程的方式拦截并阻止它吗?
发布于 2013-04-26 06:46:07
在iOS 6.0及更高版本中,您可以通过重写-UIViewController shouldPerformSegueWithIdentifier:-UIViewController:方法并返回NO,防止在通常触发它的操作发生后触发-UIViewController。
发布于 2012-08-23 02:25:51
您可以在其中使用来自控制器本身的segue,然后使用performSegueWithIdentifier执行segue,然后您可以测试这个特定的segue并决定是否执行。
发布于 2013-04-25 12:48:55
您可以像在UIStoryboardSegue的参考文献中所描述的那样,对其进行子类化。
一项可能的执行:
.h
@interface MYPushNoAnimationSegue : UIStoryboardSegue
@end.m
#import "MYPushNoAnimationSegue.h"
@implementation MYPushNoAnimationSegue
- (void)perform {
if (condition) {
[[(UIViewController *)self.sourceViewController navigationController] pushViewController:self.destinationViewController animated:NO];
}
}
@end完成后,您可以在故事板中选择现有的segue,然后将其样式设置为定制,并在Attributes检查器中向Segue类输入MYPushNoAnimationSegue。
我知道很多时间过去了,也许你已经解决了,但它可能会帮助那些面临同样问题的人。
https://stackoverflow.com/questions/12083415
复制相似问题