1

「MainStoryboard_iPhone.storyboard」という名前のストーリーボードがあり、2 つのビューがあります。最初のビューには、開示ボタンのあるテーブル セルがあります。テーブルセルを他のビューにドラッグドロップしてビューを表示できますが、ユーザーがセグエを使用せずにアクセサリボタンをクリックした場合にのみプログラムで実行する必要があります。2 つのビューの名前は、RootViewController と ProviderLookupViewController です。現在、このコードを試してみましたが、機能しません。セルのアクセサリ ボタンをクリックするとエラーがスローされます。コメント行は、私が試した他のものです

-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
    UIStoryboard*  sb = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone"
                                                  bundle:nil];
   // ProviderLookupViewController* vc = [sb instantiateViewControllerWithIdentifier:@"ProviderLookupViewController"];
    UIViewController* vc = [sb instantiateViewControllerWithIdentifier:@"ProviderLookupViewController"];
     [self presentModalViewController:vc animated:YES];
    //[self.navigationController pushViewController:vc animated:YES];

}
4

3 に答える 3

3

私が正しい場合:

1) あなたの質問から、2 つのビュー コントローラーを備えたストーリー ボードがあるようです。最初の 1 つは UITableViewController で、もう 1 つは UIViewController のサブクラスです。

2) ユーザーが開示ボタンをクリックしたときに 2 番目のビューを表示したい。

nib ファイルの代わりにストーリーボードを使用することを考えると、セグエを使用することをお勧めします。コードを書かなくても問題を解決できます。

テーブル ビュー セルには 2 つのセグエを含めることができます。1 つはセルを選択した場合、もう 1 つはアクセサリ ボタンを選択した場合です。セルからコントロールのドラッグを行う代わりに、アクセサリ ボタンから 2 番目のビュー コントローラへのコントロールのドラッグ。メニューが表示されたら、Selection Segue の下ではなく、アクセサリ アクションの下のオプションを選択する必要があります。

ここに画像の説明を入力

テーブル ビューのプロトタイプ セルでは、開示アクセサリを有効にする必要があります。ユーティリティ ペイン (右側) から実行します。アクセサリーは、これを行うことはできません。写真のアクセサリーは詳細開示です。

ここに画像の説明を入力

ユーティリティ ペインでは、セグエも実行できます。ただし、付属のアクションを使用してください。写真は私のプロジェクトの 1 つです。

ここに画像の説明を入力

于 2013-08-28T10:39:35.850 に答える
1

最初ストーリーボード IDに、シナリオで ProviderLookupViewController としてストーリーボード ID を指定し、ストーリーボード ID を使用することにチェックを入れます。

ProviderLookupViewController* vc = [self.storyboard instantiateViewControllerWithIdentifier:@"ProviderLookupViewController"];
[self presentModalViewController:vc animated:YES];

注:ProviderLookupViewController は識別子です。

于 2013-08-28T10:10:34.987 に答える