2009-06-16 8 views
-1

가능한 중복 : 방법에 위의 코드에서
Uibutton events있는 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 변수 이름은 "데이터"나는이다 그 버튼을 누를 때 "showMessage"메쏘드에서 그 값 (YES U PRESSED BUTTON)을 얻고 싶습니다.

나는이 @selector 변수를 사용하여 수행됩니다 알고 ..하지만 난

답변

4
  1. String 객체를 수행하고 data objects이 다른 두 가지입니다 방법을 모르겠어요. 문자열 변수 "데이터"의 이름을 지정하지 마십시오. 코드를 혼란스럽게 읽는 다른 사람과 버그에 대한 프로그램을 설정하고 있습니다.
  2. @selector은 변수가 아닙니다. 그것은 문자 적 ​​표현의 일부입니다.

어느 대신 myButtonClickshowMessage:에 문자열을 보유하여 변수를 정의하거나 그것을 인스턴스 변수를 만들고 문자열을 생성하고 init에 할당합니다.

문자열을 dealloc에서 해제하는 한 인스턴스 변수를 지정하면 누수가 수정됩니다 (alloc 문자열이지만 결코 해제하지 않음). 현재 코드가 잘못된 이유에 대한 자세한 내용은 the Memory Management entry in Cocoa Core Competencies을 참조하십시오.

또한 myButtonClick이 (가) 무엇을해야할지 혼란 스럽습니다. 단추를 클릭하지는 않습니다. IB를 만드는 것이 훨씬 쉽습니다. 또한보기에 단추를 넣지 않아도됩니다. 당신은 그것을 만들고 그것을 설정하고, 그런 다음 그 방법은 끝납니다.

관련 문제