Iphone obj-c串联整数问题
我是obj-c的新手,我正在尝试编写一个简单的iAction,其中一个按钮单击后会更改其标签。它适用于图像背景和静态字符串,但在以下情况下崩溃:Iphone obj-c串联整数问题,iphone,objective-c,cocoa,concatenation,Iphone,Objective C,Cocoa,Concatenation,我是obj-c的新手,我正在尝试编写一个简单的iAction,其中一个按钮单击后会更改其标签。它适用于图像背景和静态字符串,但在以下情况下崩溃: int i = (arc4random()%90); NSString *lab = [NSString stringWithFormat:@"%d", i]; [sender setText:lab]; 为什么??提前付款 编辑:这是整个方法 -(IBAction) toggleUIButtonImage:(id)sender{ NSStr
int i = (arc4random()%90);
NSString *lab = [NSString stringWithFormat:@"%d", i];
[sender setText:lab];
为什么??提前付款
编辑:这是整个方法
-(IBAction) toggleUIButtonImage:(id)sender{
NSString *img = @"bulldog-cute-tom-bancroft.jpg";
NSString *imgSel = @"kitten-cute-tom-bancroft.jpg";
UIImage *unselectedImage = [UIImage imageNamed:img];
UIImage *selectedImage = [UIImage imageNamed:imgSel];
if ([sender isSelected]) {
[sender setBackgroundImage:unselectedImage forState:UIControlStateNormal];
[sender setSelected:NO];
}else {
[sender setBackgroundImage:selectedImage forState:UIControlStateSelected];
[sender setSelected:YES];
}
int i = (arc4random()%90);
NSString *lab = [NSString stringWithFormat:@"%d", i];
[sender setTitle:lab forState: UIControlStateNormal];
}
这不是随机int或int2str转换。这是设置按钮文本的方式。 使用此选项,它应该可以:
[sender setTitle: lab forState: UIControlStateNormal];
(当然,如果发送方实际上是一个UIButton)
编辑:
此外,还建议将sender强制转换为UIButton*(或您希望对该方法作出响应的任何其他特定类),以确保使用正确的类方法。您正在尝试设置UIButton的标题。 为此,您需要使用
setTitle:forState:
而不是setText
[sender setTitle:lab forState:UIControlStateNormal];
UIButton参考:
编辑:
如果sender
是一种id类型,请将其更改为UIButton,如下所示:
UIButton *b = (UIButton *)sender;
或者简单地更改方法签名,如:
-(IBAction) toggleUIButtonImage:(UIButton *)sender
您应该通过界面生成器设置对按钮的引用,如下所示:
@属性(强,非原子)UIButton*buttonName;
或者从iAction方法获取按下按钮的按钮,使用:
UIButton*buttonName=(UIButton*)发送方;
无论哪种方式,都可以使用以下语法设置UIButton标题的文本:
[按钮名称设置标题:实验室状态:uicontrol状态正常];
你能发布错误和bedug日志输出吗?发布你的整个按钮点击方法,让我看看^^。还可以打印错误日志并删除断点,这样我们也可以查看一下。您可能希望在该方法的第一行中添加从发件人到UIButton的强制转换。uuaaw!泰,伙计!:)我来自网络,这对我来说还是有点奇怪EH:D
-(IBAction) toggleUIButtonImage:(UIButton *)sender