Ale*_*lec 0 iphone objective-c
我试图将UIImageView的图像设置为等于某个图像:
- (IBAction)showCard:(id)sender {
for (KCCardView *cardView in self.view.subviews) {
for (KCCard *aCard in dealerHand) {
cardView.image = aCard.cardImage;
}
}
}
Run Code Online (Sandbox Code Playgroud)
但所有这一切都在发生,应用程序崩溃并将以下内容记录到控制台.我似乎无法找到这个bug.
-[UIRoundedRectButton setImage:]: unrecognized selector sent to instance
Run Code Online (Sandbox Code Playgroud)
谢谢!
(gdb) backtrace
#0 0x012deccc in objc_exception_throw ()
#1 0x01150f0d in -[NSObject doesNotRecognizeSelector:] ()
#2 0x010b5e2f in ___forwarding___ ()
#3 0x010b5c12 in __forwarding_prep_0___ ()
#4 0x011510e9 in -[NSObject performSelector:withObject:withObject:] ()
#5 0x000197fd in -[UIApplication sendAction:to:from:forEvent:] ()
#6 0x00019792 in -[UIApplication sendAction:toTarget:fromSender:forEvent:] ()
#7 0x000be2aa in -[UIControl sendAction:to:forEvent:] ()
#8 0x000be773 in -[UIControl(Internal) _sendActionsForEvents:withEvent:] ()
#9 0x000bda3e in -[UIControl touchesEnded:withEvent:] ()
#10 0x0003eb04 in -[UIWindow _sendTouchesForEvent:] ()
#11 0x0003ed2d in -[UIWindow sendEvent:] ()
#12 0x0002550c in -[UIApplication sendEvent:] ()
#13 0x00018d00 in _UIApplicationHandleEvent ()
#14 0x00deb7fe in PurpleEventCallback ()
#15 0x01123435 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()
#16 0x01087d72 in __CFRunLoopDoSource1 ()
#17 0x0108665a in __CFRunLoopRun ()
#18 0x01085b04 in CFRunLoopRunSpecific ()
#19 0x01085a1b in CFRunLoopRunInMode ()
#20 0x00de9f67 in GSEventRunModal ()
#21 0x00dea02c in GSEventRun ()
#22 0x00016cf2 in UIApplicationMain ()
#23 0x00001ed8 in main (argc=1, argv=0xbfffed94) at /Users/Alec/Desktop/Blackjack/Blackjack/main.m:16
#24 0x00001e35 in start ()
Run Code Online (Sandbox Code Playgroud)
首先,您应该发布错误的堆栈跟踪,以便我们可以确定该代码中发生了错误.您可能需要设置异常断点以获取发生错误的堆栈跟踪.
其次,错误消息告诉您正在将setImage:消息发送到UIRoundedRectButton对象.如果您发布的代码中发生错误,则问题cardView是a UIButton,而不是a UIImageView.你正在遍历所有的子视图self.view.所以我们知道这些子视图中至少有一个是a UIButton,而不是a UIImageView.
此外,您的嵌套循环看起来很可疑.我怀疑你正在尝试做这样的事情:
- (IBAction)showCard:(id)sender {
int i = 0;
for (UIView *view in self.view.subviews) {
if (![view isKindOfClass:[KCCardView class]])
continue;
KCCardView *cardView = (KCCardView *)view;
cardView.image = [[dealerHand objectAtIndex:i++] cardImage];
}
}
Run Code Online (Sandbox Code Playgroud)
这也不是一个很好的方式,但它可能对你有用.更好的方法是为视图控制器分别NSArray提供仅包含对KCCardView实例的引用.
| 归档时间: |
|
| 查看次数: |
2076 次 |
| 最近记录: |