2013-02-21 12 views

cevap

22

Evet: UIButton alt sınıf ve güçlü bir özellik olarak ekleyin sürece örneğin, Tanımlı Çalışma Süresi nitelik bir kullanıcı kullanamaz

-(IBAction)pressedButton:(id)sender 
{ 
    id value = [sender valueForKey:key]; 
} 

Not

@interface UINamedButton : UIButton 
@property (strong) NSString *keyName; 
@end 

Kullanıcı Tanımlı Çalıştırma Zamanı özniteliği ayarlarsanız ve bunu yapmadıysanız, Xcode maalesef ne yazık ki çökecektir.

Ardından

-(IBAction)clicked:(UIControl *)sender 
    { 
    NSString *test = @"???"; 

    if ([sender respondsToSelector:@selector(keyName)]) 
      test = [sender valueForKey:@"keyName"]; 

    NSLog(@"the value of keyName is ... %@", test); 

    // if you FORGOT TO SET the keyName value in storyboard, that will be NULL 
    // if it's NOT a UINamedButton button, you'll get the "???" 

    // and for example... 
    [self performSegueWithIdentifier:@"idUber" sender:sender]; 
    // ...the prepareForSegue could then use that value in the button. 

    // note that a useful alternative to 
    // if ([sender respondsToSelector:@selector(stringTag)]) 
    // is... 
    // if ([sender respondsToSelector:NSSelectorFromString(@"stringTag")]) 
    } 
gibi bu değeri elde edebilirsiniz