0

ここに画像の説明を入力

私の設定ページである UITableViewController を持つアプリがあります。self.navigationController (ストーリーボード ID を使用) を使用して、presentModalViewController で UITableViewController をプッシュしています。ただし、そのページを見ようとするたびに、例外が表示されます。いくつかの投稿を読んだ後、2つの方法を実装してみました

- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section
{
return 3;
}

- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath  *)indexPath
{
UITableViewCell *cell = [super tableView:tableView
                   cellForRowAtIndexPath:indexPath];
return cell;
}
**my .h File**

@interface Setting : UITableViewController<UITableViewDelegate,UITableViewDataSource>

IB ですべての UI 設定を行ったので、上記の 2 つの実装メソッドでは何も変更しませんでした。

ビューをUITableViewControllerにプッシュしているmainviewcontrollerでは、以下のコードを使用しています

Setting *nextController = [[self storyboard] instantiateViewControllerWithIdentifier:@"setting"];
[self presentModalViewController:nextController animated:YES];
Setting *dvc = [[Setting alloc] init];
[self.navigationController pushViewController:dvc animated:YES];

IB のすべての UI

IB ですべての UI を既に設定しているのに、なぜそれらのメソッドを実装する必要があるのですか? 少なくとも私はビューを正しく見ることができます。

4

1 に答える 1

2

同じviewControllerを2回初期化しようとしているようです。あなたはあなたのalloc] init]後にする必要はありませんinstantiateViewControllerWithIdentifier.少なくとも、私の経験からは、あなたはしません. これを試して:

Setting *nextController = [[self storyboard] instantiateViewControllerWithIdentifier:@"setting"];
[self.navigationController pushViewController:nextController animated:YES];

nextControllerこれによりstoryBoardID、「設定」の が右から既存の に「プッシュ」されますNavigationController

ただし、私の直感を使用すると、独自の設定ビューをモーダルに表示したいと思いますNavigationController。その場合は、次のコードを試してください。これは、設定ViewControllerを にラップしNavigationController、その全体をモーダルに表示して、設定内をナビゲートできるようにします。

Setting *nextController = [self.storyboard instantiateViewControllerWithIdentifier:@"setting"];
UINavigationController *navcont = [[UINavigationController alloc] initWithRootViewController:nextController];
navcont.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:navcont animated:YES completion:nil];

または、ストーリーボード自体でこれらすべてを行うこともできます。設定ビュー コントローラーを選択し、[エディター メニュー] > [埋め込み...] > [ナビゲーション コントローラー] に移動します。次にsegue、ボタンから、設定コントローラーを保持するナビゲーションコントローラーまでを作成します。セグエを「モーダル」に設定すれば完了です。

于 2013-02-04T18:30:19.127 に答える