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];

Другие вопросы по тегам