0

小さなテーブルビュー(スクロールなし)を作成し、ユーザーにオプションを選択してもらいたい。どのオプションが選択されたかを知るためintに、View Controllerのヘッダーファイルでタイプを定義し、それをプロパティとして公開しました。メソッドを定義しました。

- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
       //some code here/
       int optionSelected = indexPath.row;
}

これを他のViewControllerで使用したいのですint optionSelectedが、機能しません。さらに、上記で定義した関数で「未使用の変数'optionSelected'」というエラーが発生します。どこがうまくいかないのか教えてください。ありがとうございました。

4

3 に答える 3

3

optionSelected上記のコードでローカル変数として再宣言しています。これは、インスタンス変数に割り当てていないことを意味するため、後で使用しようとしても機能しません。int行の先頭からを削除します。これにより、警告が削除され、他のすべてに問題がない場合は、クラス内の他の場所で選択した行インデックスにアクセスできるようになります。

于 2012-07-15T06:43:03.387 に答える
0

コードで、int optionSelectedローカルスコープで新しい整数を定義します。つまり、そのメソッド内でのみ有効です。

int呼び出さoptionSelectedれたものをプロパティとして公開している場合は、self.optionSelected = indexPath.rowまたはで設定し[self setOptionSelected:indexPath.row]ます。

于 2012-07-15T06:40:48.427 に答える
0

まず、optionSelectedは、選択された値ではなく、選択されたテーブルの行を保存することに注意してください。次に、現在のクラスのインスタンス変数としてoptionSelectedを作成したため、他のクラスから直接アクセスすることはできません。その値を次のビューに渡すには、現在のビューで行ったのと同じように、次のビューのヘッダーにインスタンス変数としてoptionSelectedを追加します。次に、次のビューを構成するときに値を次のビューに渡し、それをプッシュします。

// 1) create next view 2) configure next view 3) push next view
UIViewController *nextViewController= [[UIViewController alloc] initWithNibName:@"nextViewController" bundle:nil];

nextViewController.optionSelected = optionSelected;

[self.navigationController pushViewController:_tabBarController animated:YES];
于 2012-07-15T06:51:02.837 に答える