2012-08-15 45 views
1

想知道怎樣才能設置視圖控制器與已是NavigationController的堆棧上的性能更改屬性疊加

我的情況:

我想建立一個這樣的圖片上傳流量

(導航堆棧) RootViewController的 - > TakePictureViewController - > EditPictureViewController - > UploadPictureViewController

當用戶確認從UploadPictureViewController上傳,而不是開始上傳,我想在包含上傳查詢的RootViewController上設置一個NSDictionary屬性,然後將導航堆棧彈回到RootViewController並讓它處理查詢的啓動和狀態報告。

這是我在uploadpictureviewcontroller代碼,目前,代碼沒有流行到右視圖控制器,但uploadPackage財產仍然是零,我也試圖-setUploadPackage

RootViewController *rvc = (RootViewController *)[self.navigationController.viewControllers objectAtIndex:0]; 

rvc.uploadPackage = uploadPackage; 

[self.navigationController popToViewController:rvc animated:YES]; 

所有幫助表示讚賞,感謝。

回答

2

嘗試使用[self.navigationController popToRootViewControllerAnimated:YES]。這應該做到這一點。

編輯:

如果您有RootViewController的只有一個實例,那麼你可以將其設置爲一個單身,因此你可以從任何其他控制器(就像的appDelegate)訪問它。要做到這一點,你需要以下內容添加到您的RootViewController.msynthesize...;

static RootViewController *rootViewController; 

+(id)sharedRootController { 
    return rootViewController; 
} 

init方法內的RootViewController添加以下行:

rootViewController = self; 

現在回到你UploadPictureViewController可以設置uploadPackage像這樣:

RootViewController *rvc = [RootViewController sharedRootController]; 
rvc.uploadPackage = uploadPackage; 

請注意,您不應該使用我們如果要存在多個RootViewController實例,則爲單例方法。

希望這有助於!

+0

請參閱我的回答編輯,我想知道如何報告數據回到RootViewController。 – Doug 2012-08-15 17:26:32

+0

好吧,首先做了'popToRootViewControllerAnimated:'工作?至少爲了爆炸?第二,是否有可能在任何給定的時間在你的應用程序中有超過一次的RootViewController實例? – KDaker 2012-08-15 17:53:57

+0

popping確實有效。另外,不應該有。 RootViewController基本上是所有應用程序操作的起點,並且它永遠不會被推入,只會彈出。 – Doug 2012-08-15 18:01:39