簡體   English   中英

iOS-推送到故事板中沒有的View Controller

[英]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文件,其中包含視圖控制器主視圖的視圖布局。 例如,我們將其命名為“測試”。

  1. 轉到該nib文件,單擊文件的所有者。 在此處輸入圖片說明

  2. 將class更改為視圖控制器的名稱。 就我而言,我將其命名為ViewController。

在此處輸入圖片說明

  1. 右鍵單擊文件的所有者。 將視圖控制器的視圖出口鏈接到nib文件中的視圖。

  2. 然后,在要轉換到該視圖控制器的視圖控制器中,執行以下操作:

    UIViewController * controller = [[UIViewController alloc] initWithNibName:@“ Test”捆綁包:[NSBundle mainBundle]];

    [自身presentViewController:controller動畫:是完成:無];

它將以模態呈現視圖控制器。

如果要嵌入導航控制器,則可以這樣進行:

[self.navigationController pushViewController:controller animated:YES];

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM