2012-01-24 72 views
0

(iOS) 我有一個UITableView作爲根視圖(屏幕1)。當一個單元格被選中時,它會推送一個包含兩個按鈕的新UIView(屏幕2)。當其中一個按鈕被按下時,一個新的UIView被按下(屏幕3)。 我想將屏幕1的一些鍵值對傳遞給屏幕2和屏幕3.使用下面的代碼,我可以將值傳遞給屏幕2,沒有任何問題,但屏幕3將值作爲值返回,而不管哪個單元格被挑選。任何有關爲什麼會發生這種情況的幫助將會很好。 (另一種方法是使用開關的情況下在屏幕2將值傳遞到屏幕3)如何訪問堆棧中的NSDictionary 2級別?

屏幕1:

NSIndexPath *indexPath = [self.tableView indexPathForCell:sender]; 
NSDictionary *sentItems = [NSDictionary dictionaryWithObjectsAndKeys:indexPath, @"indexPath", nil]; 
[destination setValue:sentItems forKey:@"sentItems"]; 

回答

1

我認爲將是最簡單的解決方案是沿sentItems或類似字典傳以及第二和第三視圖初始化期間可能需要的所有值。

因此,如果您需要視圖2和A,B,C爲圖3或D,E,F用於替代按鈕視圖3個值X,Y,通過與X,Y,A,B,C,D,E,F一個字典中定義的顯示之前,以查看2,然後通過適當的值,在時查看3選擇其中一個按鈕,但在顯示該視圖之前。

這可以節省回頭看堆疊。如果您的第一個視圖實際上是應用程序的根視圖,那麼您還可以選擇在應用程序委託類中定義此字典,以便通過[[UIApplication sharedApplication]delegate]全局訪問該字典。

+0

謝謝,這很有道理。我是新來的Objective-C,請分享一個如何通過sharedApplication訪問NSDictionary的例子嗎? – benbeel

+1

[This](http://iphonebasics.wordpress.com/2011/10/20/global-variables-and-accessing-variable-in-appdelegate/)是一個足夠體面的教程。基本上,只需將我上面發佈的代碼行分配給一個'MyAppDelegate *'對象(或任何實際的應用程序委託類名),然後就可以像訪問其他任何具有屬性和方法的Objective-C類一樣訪問它已經定義了它。 – darvids0n

+0

謝謝,是的,我只是需要的語法。 – benbeel