2012-01-10 13 views
0

私はIOSアプリケーションで作業しており、この問題で約1週間困惑しており、解決策を見つけることができません。あなたが提供できるどんな助けも大歓迎です。ここに私のセットアップがあります:IOSモーダルビューコントローラはブラック画面を提示します

  1. 私はタブバーコントローラを持っています。
  2. 私はナビゲーション項目 "Add"を持つナビゲーションバーを持つTableViewControllerを持っています。
  3. "Add"セレクタを押した後、ピッカーがある別のviewControllerをモーダルに表示しています。
  4. 私はコアデータを使用しています。

2番目のビューコントローラをモーダルに表示すると、ナビゲーションバーが付いた黒い画面が表示されます。関係のない画面から2番目のビューコントローラにアクセスすると、ナビゲーションバーなしで正常に表示されます。

ナビゲーションバーの[保存]を押したときにオブジェクトが保存されていないというエラーメッセージは記録されません。しかし、 "保存"を押すと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]; 
} 

は私の第2のビューコントローラのコードです:

- (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

でなければなりません。ストーリーボードを使用している場合、標準のコードで次のView Controllerにナビゲートすることはできません。私は、TableViewController.mファイルにprepareForSegueステートメントを入れて、ストーリーボード上の接続をフックし、セグを特定しました。

ここで、[追加]ボタンを押すと、新しいビューコントローラ画面が表示され、黒ではありません。私がキャッチされない例外により 『NSInternalInconsistencyException』、理由にアプリを終了」のエラーメッセージが表示されます:私はinitWithNibをしようとすると

Here's a link to a useful tutorial

0

私の推測では、あなたが初期化されている方法は右ではありません:私は答えを見つけることが非常にフラストレーション後

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

initWithNIB:

+0

。 『バンドルにNIBをロードできませんでした。』私は、私はストーリーボードを使用していますので、これがあると思います – PopUp

+0

更新:私はtextFieldしか持たない別のビューコントローラを追加しようとしましたが、ピッカーを持っているビューコントローラに置き換えられましたが、同じ黒い画面が表示されています。 – PopUp

+0

ストーリーボードでSegueを使用するだけで、ボタンや表のセルからmoのようなモーダルをトリガするアクションをCtrlキーを押しながらドラッグするだけで簡単に表示できます。ビューコントローラ。 – agilityvision

関連する問題