2012-01-10 66 views
0

我正在一個IOS應用程序,並已被這個問題困擾了大約一個星期,現在無法找到解決方案。任何幫助你可以提供將不勝感激。這是我的設置:IOS莫代爾視圖控制器呈現黑色屏幕

  1. 我有一個標籤欄控制器。
  2. 我有一個TableViewController,它有一個導航欄,導航條目「添加」。
  3. 按下「添加」選擇器後,我模態地呈現另一個viewController,它有一個選擇器。
  4. 我正在使用核心數據。

當第二個視圖控制器被模態地呈現時,它會出現一個帶有導航欄的黑色屏幕。如果我從一個不相關的屏幕模態地訪問第二個視圖控制器,它會在沒有導航欄的情況下正常顯示。

沒有記錄錯誤消息,甚至沒有當您按導航欄上的「保存」時未保存該對象。但是,按下「保存」會將您帶回到TableViewController,它看起來像添加了實體。

這裏是我的TableViewController代碼:

- (void)add:(id)sender { 
    SecondViewController *addController = [[SecondViewController alloc] init]; 
    addController.delegate = self; 

    Entity *newEntity = [NSEntityDescription insertNewObjectForEntityForName:@"Entity" inManagedObjectContext:self.managedObjectContext]; 
    addController.entity = newEntity; 

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:addController]; 
    [self.navigationController presentModalViewController:navController animated:YES]; 
} 

- (void)secondViewController:(SecondViewController *)secondViewController didAddEntity:(Entity *)entity { 

    if (entity) {   

    [self showEntity:entity animated:NO]; 
} 

[self dismissModalViewControllerAnimated:YES]; 
} 


- (void)showEntity:(Entity *)entity animated:(BOOL)animated { 
    EntityDetailTableViewController *detailViewController = [[EntityDetailTableViewController alloc] initWithStyle:UITableViewStyleGrouped]; 
    detailViewController.entity = entity; 

    [self.navigationController pushViewController:detailViewController animated:animated]; 
} 

這裏是我的第二個視圖控制器代碼:

- (void) save { 

    entity.attribute = attributeTextField.text; 

    NSError *error = nil; 

    if (![entity.managedObjectContext save:&error]) 
     { 
     NSLog(@"Problem saving attribute: %@", [error localizedDescription]); 
     } 
     NSLog(@"saveAttribute"); 

    [self.delegate secondViewController:self didAddEntity:entity]; 

} 

在哪裏何去何從將是真正有用的任何建議。

回答

2

太多的無奈之後,我找到了答案。如果您正在使用故事板,則無法通過標準代碼導航到下一個視圖控制器。我把prepareForSegue語句放在我的TableViewController.m文件中,然後連接故事板上的連接並確定了segue。

現在,當您按下添加按鈕時,它會跳到新的視圖控制器屏幕,並且它不是黑色的。

Here's a link to a useful tutorial

0

我的猜測是要初始化的方法是不對的:

SecondViewController *addController = [[SecondViewController alloc] init]; 

應該initWithNIB:

+0

當我嘗試initWithNib:我得到終止應用程序的錯誤信息」由於未捕獲的異常‘NSInternalInconsistencyException’,原因是:‘在包無法加載NIB’我想這是因爲我用故事板 – PopUp 2012-01-11 04:30:12

+0

更新:我嘗試添加另一個視圖控制器,它只有一個textField,並將其替換爲具有選擇器的視圖控制器,並且仍然遇到相同的黑屏。是否有人知道用不同的方法來初始化第二個視圖控制器以模態方式使用Storyboard?這似乎是問題 – PopUp 2012-01-11 14:58:30

+0

只需在故事板中使用Segue,從任何操作觸發拖動即可觸發模式出現,例如從按鈕或表格單元格到mo達爾視圖控制器。 – agilityvision 2012-01-11 16:07:54

相關問題