[英]iOS - Pushing to a View Controller that is not in the Storyboard
好的,首先讓我們命名:
我的根視圖控制器中有一個表視圖,我們將其稱為“ HomeViewController”。 在該表視圖中,每個單元格點按都會推送一個不同的視圖控制器。 我們將這些視圖控制器集合稱為“ DetailViewControllers”。
我非常清楚地知道,我可以通過在didSelectRowAtIndexPath方法內以編程方式簡單地加載和推送每個DetailViewControllers來完成此工作。 我想做一些不同的事情,而不是使用情節提要和原型單元,但我沒有成功,所以我正在尋找一些建議,因為我不太熟悉情節提要和故事。
我要在這里實現的行為是:在HomeViewController的表視圖中,我將從原型單元中獲取一個提示。 這種選擇推動了一個“基本”視圖控制器,每個DetailViewController都從中繼承。 這些視圖控制器在情節提要中也沒有分配視圖控制器。
在prepareForSegue方法中,我要將'destinationViewController'強制轉換為'right'類。 該應用程序此時崩潰,並說“無法將類型'BaseTestViewController'的值轉換為'TestViewController'。”。 這是完全可以理解的。
所以,我的問題是:有沒有辦法使類似的工作有效?
嘗試不使用情節提要segue的情況。
let objDestVC = self.storyboard.instantiateViewControllerWithIdentifier("DestVCStroyboardId") as! DestinationViewController
self.navigationController?.pushViewController(objDestVC, animated: true)
您不能以編程方式創建segue。 沒有情節提要,Segues就不存在。 您可以通過加載nib文件來推送至視圖控制器。
這是您的操作方式。
假設您有一個nib文件,其中包含視圖控制器主視圖的視圖布局。 例如,我們將其命名為“測試”。
右鍵單擊文件的所有者。 將視圖控制器的視圖出口鏈接到nib文件中的視圖。
然后,在要轉換到該視圖控制器的視圖控制器中,執行以下操作:
UIViewController * controller = [[UIViewController alloc] initWithNibName:@“ Test”捆綁包:[NSBundle mainBundle]];
[自身presentViewController:controller動畫:是完成:無];
它將以模態呈現視圖控制器。
如果要嵌入導航控制器,則可以這樣進行:
[self.navigationController pushViewController:controller animated:YES];
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.