別のレビューコントローラを「プッシュ」する場合は、テーブルビューコントローラをUINavigationControllerに埋め込む必要があります。
ストーリーボード(iOS < 5.0)を使用しない場合は、テーブルビューのデリゲート(通常はテーブル)に-tableView:didSelectRowAtIndexPath:
が呼び出されたときに最適な機会が得られます。ビューコントローラ)。そこから、渡されたindexPath
に基づいてどこに行くかを選択し、移動するビューコントローラのインスタンスを作成し、ナビゲーションコントローラにプッシュすることができます。たとえば:ストーリーボード(iOSの5.0以上)で
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UIViewController *nextVC;
if (indexPath.section == 0) {
nextVC = [[ProfileController alloc] init];
// configure nextVC as needed
} else {
nextVC = [[LocationController alloc] init];
// configure nextVC as needed
}
[self.navigationController pushViewController:nextVC animated:YES];
}
は、物事を行うには、通常の方法は、先のビューを設定するには、次のビューコントローラへの表のセルからIBでセグエをドラッグして、あなたのロジックを実装することですコントローラは-prepareForSegue:sender:
の選択に基づいていますが、同じテーブルセルから複数のセグをドラッグすることはできません。代わりに、ビューコントローラ自体からセグをドラッグし、識別子を与えます。前述のように-tableView:didSelectRowAtIndexPath:
で選択してください。ただし、宛先ビューコントローラを自分で作成する代わりにperformSegueWithIdentifier:
に電話してください。例:あなたがタップされたテーブルの行に基づく先ビュー・コントローラを設定する必要がある場合
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section == 0) {
[self peformSegueWithIdentifier:@"showProfile"];
} else {
[self peformSegueWithIdentifier:@"showLocation"];
}
}
、-prepareForSegue:sender:
でそれを行います。
UIWebViewControllerはありませんが、ビューコントローラのいずれかがUIWebViewを管理していたかどうかにかかわらず同じです。