obj-c объединяет int выпуск
Я новичок в obj-c, и я пытаюсь написать простой IBAction, в котором однажды нажатая кнопка меняет свою метку. он хорошо работает с фоновым изображением и статической строкой, но когда он падает на этом:
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];
}
3 ответа
Это не случайное int или преобразование int2str. Это способ, которым вы устанавливаете текст своей кнопки. Используйте это, и оно должно работать:
[sender setTitle: lab forState: UIControlStateNormal];
(То есть, если отправитель действительно UIButton, конечно)
РЕДАКТИРОВАТЬ:
UIButton *button = (UIButton *)sender;
Для этого также рекомендуется приведение от отправителя к UIButton* (или к любому другому определенному классу, который вы хотите сделать отвечающим методу), чтобы убедиться, что вы работаете с правильными методами класса.
Вы пытаетесь установить заголовок кнопки UIB. Для этого вам нужно использовать setTitle:forState:
вместо setText
,
[sender setTitle:lab forState:UIControlStateNormal];
UIButton ссылка: UIButton
Изменить: если sender
тип идентификатора, измените его на UIButton, например:
UIButton *b = (UIButton *)sender;
или просто изменив сигнатуру метода, например:
-(IBAction) toggleUIButtonImage:(UIButton *)sender
Вы должны либо установить ссылку на кнопку через Interface Builder, что-то вроде:
@property (strong, nonatomic) UIButton *buttonName;
или из метода IBAction получите кнопку, с которой она была нажата, используя:
UIButton *buttonName = (UIButton *)sender;
В любом случае вы устанавливаете текст заголовка UIButton, используя следующий синтаксис:[buttonName setTitle:lab forState:UIControlStateNormal];