-1

可能重复:
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..?
}

在方法“myButtonclick”的上述代码中,我设置了一个 NSString 变量名称为“data”,当我按下该按钮时,我想在方法“showMessage”中获取(打印)它的值(YES U PRESSED BUTTON)。

我知道这是使用@selector 变量完成的。但我不知道它是如何完成的

4

1 回答 1

4
  1. 字符串对象和数据对象是两个不同的东西。不要将字符串变量命名为“数据”——你会让自己和其他任何阅读代码的人感到困惑,而你的程序也会出现错误。
  2. @selector不是变量。它是文字表达的一部分。

要么定义保存字符串的变量showMessage:而不是myButtonClick,要么将其设为实例变量并创建字符串并将其分配给init.

只要alloc您在dealloc. 请参阅Cocoa Core Competencies 中的内存管理条目以获取有关当前代码错误原因的更多详细信息。

我也很困惑myButtonClick应该做什么。它当然不会点击按钮——它所做的只是创建它(您会发现在 IB 中更容易做到这一点)。另外,您甚至没有将按钮放入视图中;您创建并设置它,然后该方法结束。

于 2010-01-11T23:59:35.353 回答