события uibutton с @selector [duplicate]

Возможный дубликат:
события в Uibutton

-(void)myButtonclick {
    NSString *data=[[NSString alloc]initWithString:@"YES U PRESSED BUTTON"];
    UIButton *refreshbutton=[UIButton buttonWithType:UIButtonTypeCustom];

    [refreshbutton setFrame:CGRectMake(15.0f, 330.0f, 150.0f, 32.0f)];
    [refreshbutton setCenter:CGPointMake(80.0f,340)];   
    [refreshbutton setBackgroundImage: normalImage forState: UIControlStateNormal];
    [refreshbutton setBackgroundImage: downImage forState: UIControlStateHighlighted];
    [refreshbutton setBackgroundImage: selectedImage forState: UIControlStateSelected];
    [refreshbutton setTitle:@"Refresh"  forState:UIControlStateNormal];
    [refreshbutton addTarget:self action:@selector(showMessage:) forControlEvents:UIControlEventTouchUpInside];
}

-(id)showMessage:(id)sender{
    // Here I want to get the value of "data" which is defined the method 
    // "myButtonclick" in the first line. how it is possible..?
}

В приведенном выше коде в методе «@selector» я устанавливаю одно имя переменной NSString «data». Я хочу получить (напечатать там) его значение (YES U PRESSED BUTTON) в методе «showMessage», когда я нажимаю эту кнопку.

Я знаю, что это делается с помощью showMessage: variable .. но я не знаю, как это делается

iphone,objective-c,cocoa,cocoa-touch,uibutton,

-1

Ответов: 1


4
  1. Объекты String и объекты данных - это две разные вещи. Не называйте строковую переменную «data» - вы настраиваете себя и всех, кто читает код для замешательства, а ваша программа - для ошибок.
  2. @selectorне является переменной. Это часть буквального выражения.

Либо определите свою переменную, которая содержит строку myButtonClickвместо init, либо сделайте ее переменной экземпляра, и создайте строку и назначьте ее alloc.

Если это переменная экземпляра, вы также исправите утечку, которую у вас есть (вы, deallocно никогда не отпустите ее), пока вы отпустите строку myButtonClick. См. Запись управления памятью в компетенциях Cocoa Core для более подробной информации о том, почему ваш текущий код неверен.

Я также смущен тем, что myButtonClickдолжно делать. Он, конечно, не нажимает кнопку - все, что она делает, это создать ее (что вам будет намного легче делать в IB). Кроме того, вы даже не помещаете кнопку в представление; вы создаете его и настраиваете, а затем метод заканчивается.

iphone, Objective-C, какао, какао-осязание, UIButton,
Похожие вопросы