2016-07-30 39 views
0

好吧,首先讓我們命名的東西:iOS的 - 推到一個視圖控制器,是不是在故事板

我有我的根視圖控制器至極表視圖,我們稱之爲「HomeViewController」。在該表中查看每個單元格點擊會推動不同的視圖控制器。我們稱之爲「DetailViewControllers」的視圖控制器的這個集合。

我完全知道我可以通過在didSelectRowAtIndexPath方法內以編程方式加載和推送每個DetailViewController來完成此工作。我想用故事板和原型單元做一些不同的事情,但我沒有成功,所以我在尋找一些建議,因爲我不太熟悉故事板和細節。

我試圖在這裏實現的行爲是: 我會從我的HomeViewController中的表視圖中的原型單元格的segue。 segue推動一個「基礎」視圖控制器,每一個DetailViewController都從其繼承。這些視圖控制器在故事板中也沒有分配的視圖控制器。

在prepareForSegue方法中,我想將'destinationViewController'轉換爲'right'類。該應用程序崩潰在這一點上說:「無法將類型'BaseTestViewController'的值轉換爲'TestViewController'」。這是完全可以理解的。

所以,我的問題是:有沒有辦法讓這樣的工作?

+0

你是說你想推到視圖控制器,甚至不存在故事板? –

+0

@JLT是的,正好。這甚至有可能嗎? 「 – Bienemann

回答

0

您不能以編程方式創建segues。如果沒有故事板,則不存在細分。您可以通過加載nib文件來推送到視圖控制器。

下面是你如何做到這一點。

比方說,您有一個包含視圖控制器主視圖視圖佈局的nib文件。例如,我們將其命名爲「測試」。

  1. 轉到該nib文件,單擊文件的所有者。 enter image description here

  2. 將類更改爲您的視圖控制器的名稱。在我的情況下,我將其命名爲ViewController。

enter image description here

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

  • 然後在你想過渡到視圖控制器視圖控制器,你做這樣的:

    的UIViewController *控制器= [[UIViewController的頁頭] initWithNibName:@ 「測試」 捆綁:一個NSBundle mainBundle ]];

    [self presentViewController:controller animated:YES completion:nil];

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

    如果您嵌入導航控制器,那麼你可以做這樣的:

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

    希望它能幫助。

    +0

    這是一個恥辱,能夠動態地創建故事板中的segues和元素將提供很大的靈活性。我知道如何做到這一點,「正常的方式」,但無論如何感謝這個例子。我接受你的答案,因爲你是唯一一個告訴我我不能以編程方式創建segues的人。 – Bienemann

    0

    沒有故事板segue試試這個樣子。

    let objDestVC = self.storyboard.instantiateViewControllerWithIdentifier("DestVCStroyboardId") as! DestinationViewController 
    self.navigationController?.pushViewController(objDestVC, animated: true) 
    
    +0

    」我完全知道我可以通過在didSelectRowAtIndexPath方法中以編程方式加載和推送每個DetailViewController來完成這項工作,我想做一些不同的事情(...)「 」所以,我的問題是:是一種讓賽車像這樣工作的方法?「 無論如何。 – Bienemann

    相關問題