SHE*_*ANE 7 iphone cocoa-touch objective-c uibutton ios
我希望此方法检查条件是否为真,然后设置特定按钮(按钮)以获得我指定的图像.这是代码.
-(void)canAfford:(float) f: (UIButton*)button {
if([self playerHas:(f)] == YES) {
[button setImage:[UIImage imageNamed:nil] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"ButtonBGclicked.png"] forState:UIControlStateHighlighted];
} else {
[button setImage:[UIImage imageNamed:@"ButtonBG.png"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:nil] forState:UIControlStateHighlighted];
}
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误.
2013-09-22 10:35:39.985 Tapple[15663:a0b] CUICatalog: Invalid asset name supplied: , or invalid scale factor: 1.000000
Run Code Online (Sandbox Code Playgroud)
bne*_*ely 13
你在打电话[UIImage imageNamed:@""]或[UIImage imageNamed:nil].没有图像匹配空字符串.如果您要清除图像,请通过nil而不是呼叫imageNamed:.
试试这个(更新的原始代码,包含@Kyle Fang的评论):
- (void)canAfford:(float) f: (UIButton*)button {
if([self playerHas:(f)] == YES) {
[button setImage:nil forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"ButtonBGclicked.png"] forState:UIControlStateHighlighted];
} else {
[button setImage:[UIImage imageNamed:@"ButtonBG.png"] forState:UIControlStateNormal];
[button setImage:nil forState:UIControlStateHighlighted];
} }
Run Code Online (Sandbox Code Playgroud)
小智 5
使用断点来查找导致+ [UIImage imagenamed:]生成错误的特定调用的更好方法是使用符号断点.
打开Breakpoint Navigator并单击左下角的"+"按钮.选择"添加符号断点...".然后编辑断点以进行这些设置:
符号:+ [UIImage imageNamed:]条件:$ r2 == nil
条件测试寄存器r2,它指向imageNamed:方法的参数,用于方法的零值参数.您还可以将Condition设置为(BOOL)[(NSString*)$ r2 isEqualToString:@""],如果您想查看是否将空字符串用作参数.请注意,寄存器r2仅在设备上进行调试时才存在.模拟器将使用不同名称的寄存器,因为它在x86架构上运行.
满足条件时,调试器将破坏UIKit库的汇编代码,但您可以在线程的堆栈跟踪中找到调用的原始源.
您只需要这个断点就可以检查整个代码库中的调用源.
| 归档时间: |
|
| 查看次数: |
6803 次 |
| 最近记录: |