[英]crash passing parameter from one viewcontroller to another
我正在嘗試將參數從一個視圖控制器傳遞給另一個,但是應用crashes
異常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'
而終止應用程序NSInvalidArgumentException', reason: '-[UINavigationController setM_selectedItemId:]: unrecognized selector sent to instance 0x9c765d0'
在情節提要中,標識為SelectedItemViewID
的視圖控制器是導航控制器,而不是SelectedItemViewController
。 因此,在設置m_selectedItemId
之前,您應該訪問導航控制器的根視圖控制器(應該是SelectedItemViewController
)。
我在這里找到解決方案: InstantiateViewControllerWithIdentifier並傳遞數據
如果要通過導航控制器將參數傳遞給視圖控制器,應該怎么辦:
UINavigationController *navigationController = [storyboard instantiateViewControllerWithIdentifier:@"SelectedItemViewID"];
SelectedItemViewController *nextView = navigationController.viewControllers[0];
nextView.m_selectedItemId = [NSNumber numberWithInt:777];
[self presentViewController:navigationController animated:YES completion:NULL];
在情節提要中選擇視圖控制器時,是否將類設置為SelectedItemViewController
?
顯然,您似乎在SelectedItemViewController上有一個@property ... m_selectedItemId
(或至少是setter方法setM_selectedItemId
),否則您的代碼甚至無法編譯。 但是,似乎[storyboard instantiateViewControllerWithIdentifier:@"SelectedItemViewID"]
並沒有真正返回預期的SelectedItemViewController
。 因此,我有種感覺,您忘記在情節提要中為SelectedItemViewController
設置正確的類名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.