2012-03-16 11 views
0

iOS開発時のNoob。これは単に実現可能性の問題です。私は、TableViewControllerを持つことが可能かどうか、そしてセルにプッシュされるデータのタイプに基づいて、2つの異なるコントローラ間でpushViewControllerを実行するかどうかを見たいと思っていました。TableViewControllerの処理。UIWebViewControllerである2つのコントローラのいずれかに移動することが可能

例えば、私たちには、検索結果として返すことができる場所と人があり、ProfileControllerまたはLocationControllerのいずれかを使用してpushViewControllerを実行したいとしますか?コントローラーの1つがUIWebViewの場合は重要ですか?

THX

EDIT 1 私はテーブルビューセルがこの質問In Objective-C, given an id, how can I tell what type of object it points to?に似て、特定のメッセージに応答するかどう言うとのUIViewControllerをプッシュするかを決定するための方法を探していますね。

答えて

0

別のレビューコントローラを「プッシュ」する場合は、テーブルビューコントローラを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を管理していたかどうかにかかわらず同じです。

関連する問題