2014-05-22 97 views
1

我有我的應用程序視圖中的一個子視圖作爲設立由本用戶指南:製作的UIButton中的子視圖訪問父視圖 - 控制

http://patientprogrammer.wordpress.com/2012/03/12/re-usable-subviews-in-ios/

我有一個UIView這是子視圖的文件所有者.xib文件,其中顯示的視圖:

-(void)awakeFromNib 

{ 
    [[NSBundle mainBundle] loadNibNamed:@"headerview" owner:self options:nil]; 
    [self addSubview:self.view_header]; 
} 

現在這個子視圖中有一個按鈕,我需要點擊。是否有可能從父視圖UIViewController訪問此按鈕?

+0

爲什麼沒有一個代表通訊鏈上的按鈕點擊事件? – Hyperbole

+0

當然,我只是尋找一個可行的解決方案來傳遞點擊事件,如果你有一個很好的解決方案 –

回答

1
  1. 首先定義協議在你的子視圖headerView(headerView.h)爲:

    @protocol headerViewDelegate; 
    
    @interface hearderView : UIView 
    @property (nonatomic,strong)IBAction UIButton * button1; 
    @property (nonatomic, assign) id<headerViewDelegate> delegate; 
    
    @end 
    
    @protocol headerViewDelegate <NSObject> 
    
    @optional 
    
    -(void)didClickedButton1; 
    
    @end 
    
  2. 在按鈕按下方法.m文件

    [self.delegate didClickedButton1]; 
    

    (這是說的這個視圖的委託將執行這個didClickedButton1:方法) (如果Viewcontroller在它的頭文件中符合這個協議,它可以成爲委託)

  3. 現在,在父視圖控制器中:

    a。符合使用headerViewDelegate import「headerview」 put

    b。現在你可以把方法didClickedButton1放在父視圖控制器中。當你點擊按鈕1時,這被稱爲 。

    -(void) didClickedButton1{ 
    
        //do your stuffs here 
        } 
    

    這種方法被稱爲父視圖控制器,當你點擊,因爲在父視圖控制器我們說我爲你(子視圖)的代表在子視圖按鈕,我是怎麼辦的任務你在協議中提到了什麼(這裏是 - (void)didClickedButton1:方法)。

相關問題