2013-02-26 38 views
1

我的應用程序從一個不使用ECSlidingViewController的視圖開始,然後有一個按鈕指向另一個使用它的按鈕。ECSlidingViewController不是第一次查看

在使用Storyboard Segue切換視圖時,但出現錯誤。

我應該添加到btnGoSecondView以正確加載ECSlidingViewController


代碼:

-(IBAction)btnGoSecondView:(id)sender { 
    [self performSegueWithIdentifier:@"SecondViewShow" sender:self]; 
} 

enter image description here


錯誤:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil' 

回答

0

我認爲你應該做首先進行一些初始化視圖,並使該視圖成爲初始視圖控制器,併爲每個視圖控制器創建一個標識符。

這樣的事情..

self.viewcontroller = [故事板instantiateViewControllerWithIdentifier:@ 「家」];

+0

這樣做完美的作品,如果我表示加載從InitialView我SecondView。但從FristView開始並使用'segue'切換,它不起作用。任何想法應該在'btnGoSecondView'正常工作? – 2013-02-26 05:06:41

+0

我的建議錯誤是因爲menucontroller中的數組,因此在menucontroller中有一個用於命名數組的「(void)awakeFromNib」,所以您應該將viewcontroller與「NSArray arrayWithObjects」 – discodisky 2013-02-26 06:41:04

0

根據你得到的對象試圖插入到一個可變數組中的錯誤,但它沒有被初始化。代碼中拋出的異常在哪裏?

試着弄清楚數組在何處被訪問以及爲什麼它是空的。 NSMutableArray可能尚未初始化,在這種情況下,您需要初始化它。

NSMutableArray *arrayName = [NSMutableArray new]; 

另一種思考:在ECSlidingViewController提出之前,我想你需要設置它的topViewController。您可以將其添加到-prepareForSegue:sender:或viewController的viewDidLoad中以顯示。

像這樣的東西可能:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    ECSlidingViewController *slidingViewController = (ECSlidingViewController *)segue.destinationViewController; 
    slidingViewController.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"FirstTop"]; 
}