2014-02-11 38 views
0

我有一些主要的viewController,我想添加一個子視圖到它,作爲一個孩子,這也是一個viewController。不能將代表添加到子視圖

我的方法是,當你完成編輯子視圖時,他會告訴主視圖對委託進行操作。

  1. 做到這一點的方法來創建多個子視圖viewcontrollers正在添加到主視圖,當有事情發生,是一個很好的方法與代表通知他?

  2. 爲什麼我不能添加委託監聽器到我的子視圖?我創建了協議,在我的子視圖,主視圖中添加子視圖,需要訂閱其委託,所以:

UIViewController *search = [[SearchView alloc]init]; //my subview that post delegate 
    //[search delete:self]; //can't add delegate here, 
    [self addChildViewController:search]; 
    // search.view.frame = CGRectMake(0, 0, 0, 550); 
    [self.view addSubview:search.view]; 
    [search didMoveToParentViewController:self]; 

回答

0

有一個在UIViewController中沒有委託財產,但你打電話

[search delete:self]; 

在此對象上,不在SearchView對象上。如果你在搜索查看添加委託財產需要申報更改爲:

SearchView *search = [[SearchView alloc]init]; 

的另一件事是,如果你添加的委託在SearchView.h文件,如:

@property(分配)YOURDEL代表; 你應該叫:的

[search setDelete:self]; 

代替:

[search delete:self]; 
+0

非常感謝!它的工作,我已經改變它爲searchView和它按預期工作。這種方法是對的嗎?將許多視圖控制器添加爲子視圖,添加到一些主視圖,他們都會將代表發佈給他,通知他何時刪除它們/執行其他操作? – Curnelious

+1

我更喜歡使用UIView而不是UIViewController,因爲它是一個較小的對象。但這一切都取決於你的需求。如果你的子視圖沒有做太多你可以讓你的根視圖控制器來管理所有的uiview子視圖,你甚至不需要使用委託,但如果在子視圖邏輯中有很多事情可以繼續使用UIviewCOntroller。 – Greg

0

試試這個

SearchView *search = [[SearchView alloc]init]; //my subview that post delegate 
[search setDelegate:self]; // or search.delegate = self; 

還需要創建協議,併爲您的子視圖的操作其所需的方法。不要忘記在主視圖界面中添加委託。

希望這可以解決您的問題