2014-01-19 95 views
0

我試圖從一個視圖控制器傳遞參數到另一個,但應用程序crashes有例外。崩潰從一個視圖控制器傳遞參數到另一個

我的代碼是這樣的:

SelectedItemViewController *nextView = [storyboard instantiateViewControllerWithIdentifier:@"SelectedItemViewID"]; 

nextView.m_selectedItemId = [NSNumber numberWithInt:777]; 

[self presentViewController:nextView animated:YES completion:NULL]; 

而且在我的籌碼我有以下幾點:

*終止應用程序由於未捕獲的異常'NSInvalidArgumentException', reason: '-[UINavigationController setM_selectedItemId:]: unrecognized selector sent to instance 0x9c765d0'

+0

你確定,你的view'controller標識符是' SelectedItemViewID'? –

+0

是的肯定:)看起來像導航控制器相關的問題。我的視圖嵌入到導航控制器中,此ID是導航控制器ID。如果還有導航控制器,我不知道如何通過參數。 –

回答

3

在你的故事板,視圖標識符爲SelectedItemViewID的控制器是導航控制器,而不是SelectedItemViewController。因此,在設置m_selectedItemId之前,您應該訪問導航控制器根視圖控制器(應該是您的SelectedItemViewController)。

+0

Wain你是正確的關於視圖控制器ID,但我傳遞導航控制器ID,因爲我SelectedItemViewController嵌入導航控制器,我需要重定向到它,否則我失去了導航欄。任何想法如何使這項工作? –

+0

您需要從導航控制器中獲取視圖控制器,例如'navigationController.viewControllers [0];' – Wain

0

當您在故事板中選擇視圖控制器時,該類是否設置爲SelectedItemViewController

顯然你在SelectedItemViewController上似乎有一個@property ... m_selectedItemId(或至少setter方法setM_selectedItemId),否則你的代碼甚至不會編譯。但似乎[storyboard instantiateViewControllerWithIdentifier:@"SelectedItemViewID"]並不真的返回預期的SelectedItemViewController。因此,我覺得你忘了在故事板中將正確的類名設置爲SelectedItemViewController

+0

plu代碼編譯完美,並且崩潰發生在我試圖重定向到新視圖時,屬性也存在,但我沒有setM_selectedItemId,並且看起來不需要擁有該方法,只要我能夠從stackoverflow中的其他帖子瞭解。 –

+0

檢查Wain的答案,我認爲他是對的:)。所以在代碼中它看起來像: UINavigationController * navigationController = [storyboard instantiateViewControllerWithIdentifier:@「SelectedItemViewID」]; SelectedItemViewController * nextView =(SelectedItemViewController *)navigationController.rootViewController; nextView.m_selectedItemId = [NSNumber numberWithInt:777]; – plu

2

,我發現這裏的解決方案:instantiateViewControllerWithIdentifier and pass data

我應該在情況下,如果你想傳遞參數通過導航控制器,查看控制器來完成:

UINavigationController *navigationController = [storyboard instantiateViewControllerWithIdentifier:@"SelectedItemViewID"]; 

SelectedItemViewController *nextView = navigationController.viewControllers[0]; 

nextView.m_selectedItemId = [NSNumber numberWithInt:777]; 

[self presentViewController:navigationController animated:YES completion:NULL]; 
相關問題