objective-c - tvOS 应用程序 - UIAlertController 与 UIAlertAction 崩溃

标签 objective-c crash uialertcontroller tvos uialertaction

我有一个单 View tvOS 应用程序。它有一个包含 24 个 Collection View 单元的 Collection View 。当一个collectionviewcell被选中时,我会触发一个警报。我正在使用 Apple 引用文档中的默认代码(粘贴在下面)。

 UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"My Alert"
                                               message:@"This is an alert."
                                               preferredStyle:UIAlertControllerStyleAlert];

 UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" 
                                               style:UIAlertActionStyleDefault
                                               handler:^(UIAlertAction * action) {}];

[alert addAction:defaultAction]; // This is what I comment out
[self presentViewController:alert animated:YES completion:nil];

当我没有将 defaultAction 添加到警报时(注释掉 [alert addAction:defaultAction];),警报会正确显示,但无法关闭它。当我将 defaultAction 添加到警报时,警报会显示“确定”按钮,但一旦出现在屏幕上就会出现可怕的 SIGABRT 错误
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '-[_UIAlertControllerActionView image]: unrecognized selector
 sent to instance 0x7fe571ddee10'

堆栈跟踪在这里:
2015-11-10 19:42:02.927 AppABC[1701:97632] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_UIAlertControllerActionView image]: unrecognized selector sent to instance 0x7fefd3ddaf10'
*** First throw call stack:
(
0   CoreFoundation                      0x000000010de0a0b5 __exceptionPreprocess + 165
1   libobjc.A.dylib                     0x000000010d884deb objc_exception_throw + 48
2   CoreFoundation                      0x000000010de126dd -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
3   CoreFoundation                      0x000000010dd6005a ___forwarding___ + 970
4   CoreFoundation                      0x000000010dd5fc08 _CF_forwarding_prep_0 + 120
5   IsItGood                            0x000000010d381170 __82-[ViewController collectionView:didUpdateFocusInContext:withAnimationCoordinator:]_block_invoke78 + 48
6   UIKit                               0x000000010e260df4 +[UIView(UIViewAnimationWithBlocks) _setupAnimationWithDuration:delay:view:options:factory:animations:start:animationStateGenerator:completion:] + 582
7   UIKit                               0x000000010e2612ec +[UIView(UIViewAnimationWithBlocks) animateWithDuration:animations:] + 63
8   IsItGood                            0x000000010d380ca8 -[ViewController collectionView:didUpdateFocusInContext:withAnimationCoordinator:] + 536
9   UIKit                               0x000000010ea24e09 -[UICollectionView _didUpdateFocusInContext:withAnimationCoordinator:] + 1181
10  UIKit                               0x000000010eb15a5e _UIFocusEnvironmentDidUpdateFocus + 628
11  UIKit                               0x000000010e4fe102 __36-[UIScreen _updateFocusWithContext:]_block_invoke + 88
12  UIKit                               0x000000010e4fe161 __36-[UIScreen _updateFocusWithContext:]_block_invoke + 183
13  UIKit                               0x000000010e4fdb9f -[UIScreen _updateFocusWithContext:] + 1912
14  UIKit                               0x000000010e4feca9 -[UIScreen updateFocusIfNeeded] + 597
15  UIKit                               0x000000010e1c1e4a _runAfterCACommitDeferredBlocks + 317
16  UIKit                               0x000000010e1d53d9 _cleanUpAfterCAFlushAndRunDeferredBlocks + 95
17  UIKit                               0x000000010e1e1312 _afterCACommitHandler + 90
18  CoreFoundation                      0x000000010dd35ab7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
19  CoreFoundation                      0x000000010dd35a27 __CFRunLoopDoObservers + 391
20  CoreFoundation                      0x000000010dd2b67b __CFRunLoopRun + 1147
21  CoreFoundation                      0x000000010dd2af78 CFRunLoopRunSpecific + 488
22  GraphicsServices                    0x0000000111582ad2 GSEventRunModal + 161
23  UIKit                               0x000000010e1b608d UIApplicationMain + 171
24  AppABC                              0x000000010d3826af main + 111
25  libdyld.dylib                       0x000000011050d9e9 start + 1
26  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

有什么想法吗??

最佳答案

根据您的堆栈跟踪,您的 View Controller 是这里的问题:您正在尝试调用 image方法上没有实现该方法的东西,这就是导致此崩溃的原因。

查看您对 -[ViewController collectionView:didUpdateFocusInContext:withAnimationCoordinator:] 的实现看看你在哪里打电话image关于某事:看起来您假设对象是一种类型,而实际上它是另一种类型。

关于objective-c - tvOS 应用程序 - UIAlertController 与 UIAlertAction 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33586099/

相关文章:

objective-c - 如何通过打印命令打开某些Mac应用程序?

objective-c - 我怎样才能在iOS中实现这种风格?

ios - 我无法执行 segue

iphone - 崩溃问题 未知情况

ios9 UIAlertController uitextfield 太小

ios - shouldChangeCharactersInRange 没有被调用

objective-c - 如何检测鼠标悬停在 NSButton 上。 Obj-C, cocoa

c++ - 为什么这个程序以 "unknown signal"终止?

browser - applet大小是否会导致浏览器崩溃

swift - 如何在 Swift 中显示来自另一个类的警报?