自定义Segue -发送到实例的未识别的选择器- setUseDefaultModalPresentationStyle



我使用这个自定义segue。它在iOS8+上运行得很好,但是在ios7上,我得到了这个错误。

2015-10-09 13:59:02.891 APPNAME[1790:60b] -[APPNAME.AFBlurSegue setUseDefaultModalPresentationStyle:]: unrecognized selector sent to instance 0x15ddafe0
2015-10-09 13:59:02.901 APPNAME[1790:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[APPNAME.AFBlurSegue setUseDefaultModalPresentationStyle:]: unrecognized selector sent to instance 0x15ddafe0'
*** First throw call stack:
(0x2e5c6f83 0x38d77ccf 0x2e5ca917 0x2e5c9203 0x2e518768 0x312c0381 0x312b63fb 0x30e19037 0x30e18fd7 0x30e18fb1 0x30e04717 0x30e18a2f 0x30e18701 0x30e136cb 0x30de88cd 0x30de6f77 0x2e59220b 0x2e5916db 0x2e58fecf 0x2e4faebf 0x2e4faca3 0x33400663 0x30e4714d 0x13e65c 0x39284ab7)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)

问题是,崩溃是模糊的。我甚至尝试在任何地方设置断点,并试图捕获抛出的任何错误。但是,它仍然没有指出错误可能在哪里。

这看起来像是一个参数/选择器错误,我怀疑这可能是Swift 2错误。我唯一能找到setUseDefaultModalPresentationStyle的引用的地方是这里。

任何帮助都将非常感激!

尝试将storyboard中的Segue设置为Custom,并通过编程方式设置样式:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    UIViewController *destination = segue.destinationViewController;
    destination.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
}

这是因为这个库使用UIVisualEffectView来获得模糊效果。遗憾的是,UIVisualEffectView仅在iOS 8及以上版本可用。

查看文档获取更多信息。

不幸的是,如果你想使用你的花哨的模糊过渡,你的应用程序不兼容iOS 7及以下版本,这不是什么大问题,因为目前只有10%的设备的iOS低于iOS 8。

更多信息在这里

解决方案:

你可以使用这个库的旧版本来解决这个问题,它还没有使用UIVisualEffectView,而是使用UIImage+ImageEffects.m来获得模糊效果。

最新更新