2011-10-20 52 views

回答

2

如果你只是想有一個行動處理器:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // ...... 
    UIButton *myButton = [[UIButton alloc] init]; // or initWithSOMETHING 
    [myButton addTarget:self action:@selector(someMethod:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:myButton]; 
    [myButton release]; 
    // ...... 
} 

- (void)someMethod:(id)sender { 
    if (![sender isKindOfClass:[UIButton class]]) return; 
    // Do something about the action here... 
} 

欲瞭解更多信息,請參閱UIControl Documentation

準備和發送活動消息

– sendAction:to:forEvent: 
– sendActionsForControlEvents: 
– addTarget:action:forControlEvents: 
– removeTarget:action:forControlEvents: 
– actionsForTarget:forControlEvent: 
– allTargets 
– allControlEvents 

或者,如果你談論調用父視圖控制器視圖控制器,你可以使用一個UIViewControllerpresentingViewController屬性來訪問「父」視圖控制器:

UIViewController *parentVC = [self presentingViewController]; 
[parentVC setSomething:self.withSomething]; 

presentingViewController - 視圖呈現此視圖控制器的控制器。 (只讀)

@property(nonatomic, readonly) UIViewController *presentingViewController

討論
此屬性的默認實現走到認爲 層次,從這個視圖控制器開始。第一個視圖 控制器發現收到 presentViewController:animated:completion:方法,或者其 definesPresentationContext屬性設置爲YES作爲該屬性的值返回 。它繼續向上走直到 找到要返回的值或它到達根視圖控制器。


還是一個UIViewsuperview屬性:

[self.view.superview doSomething]; 

superview - 接收機的上海華盈,或者如果它現在沒有零。根據您的回答上述評論
@property(nonatomic, readonly) UIView *superview

2

(只讀),這是一個按下按鈕,「標準」的方法是使用機制UIControl。所以,編程,如果你做

[myButton addTarget:myViewController action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 

按「myButton的」將導致「buttonPressed:」要在myViewController執行的方法。您還可以使用Interface Builder進行連接。

這段代碼可以放在許多不同的地方(在UIView中,在UIViewController中),結果,變量的確切名稱會改變,但是對於處理一個按鈕,這可能是最簡單的方法。

相關問題