2009-09-23 72 views
1

我已經介紹了viewController,它包含一個導航控制器,其視圖是從另一個具有UITableView的nib中加載的。我想從UITableViewController中提出viewController。我已經嘗試了self.parentViewController和self.navigationController和self.navigationController.parentViewController的每個組合,但我仍然無法解僱它。如何以及什麼是最好的解僱方式?關閉TableViewController中的ViewController

回答

0

我剛結束了使用委託來解僱父母。

0

我從來沒有得到self.navigationController.parentViewController像廣告工作,但這樣做的工作對我來說:

NSArray *viewControllerArray = [self.navigationController viewControllers]; 
int parentViewControllerIndex = [viewControllerArray count] - 2; 
[[viewControllerArray objectAtIndex:parentViewControllerIndex] myParentViewMethod:arg1 withArg2:arg2 ...]; 
+0

我無法得到這個工作,我只有一個項目在數組中,仍然沒有駁回視圖。這可能與我創建它的方式有關。我用XIB添加一個新的UIViewController,併爲UINavigationController創建一個出口,然後我把它鉤住。我接下來用XIB創建一個UITableViewController。回到UIViewController的XIB中,我將它設置爲加載該新的nib並將該類設置爲UITableViewController的類。 – woody993 2009-09-23 12:21:15

0

this不工作?

[myViewController presentModalViewController:otherController animated:YES]; 
// ... 
[myViewController dismissModalViewControllerAnimated:YES]; 
+0

我需要處理來自UITableView的數據,並在UITableViewController中執行此操作,我需要關閉parentViewController,但這不起作用 – woody993 2009-09-24 02:40:17

0

聽起來好像你已經將自己與自己的層次結構畫在了一個角落,但沒關係,我認爲我們可以修復它。有這樣做的兩個「一切如常」的方法是:

  1. 從控制器A,目前控制器B,從B沒有工作後,由乙方解僱,迴歸A
  2. 從控制器A,目前控制器B,從b執行工作,通過委託協議加薪事件,從A解僱B的控制權返回給一個

在你目前的情況,這可能需要重構者的不舒服ammount的,在這種情況下,它可能更容易只向另一個控制器公開一個句柄作爲屬性,只要確保它是一個弱參考,如下所示:

@interface ControllerB : UIViewController 
{ 
    ControllerA* controllerA; 
} 

@property (readwrite, nonatomic, assign) ControllerA* controllerA; // weak reference 

@end 

或者你喜歡的,關鍵是要範圍變量正確,這樣它的可用,當你需要它。

相關問題