私のアプリでは、各行にセルを表示するテーブルがあります。Interface Builder でボタンをセルにドラッグし、Dark Info ボタンとしてスタイル設定し、IBAction に接続しました。それはうまくいっています。ボタンのセルがあるテーブルの行に応じて、ボタンの動作が異なるようにしたいだけです。その行インデックスを取得するにはどうすればよいですか?
オブジェクト階層の基本的な理解が不足していると思われるかもしれませんが、ご容赦ください。
ありがとうシャケリエン
私のアプリでは、各行にセルを表示するテーブルがあります。Interface Builder でボタンをセルにドラッグし、Dark Info ボタンとしてスタイル設定し、IBAction に接続しました。それはうまくいっています。ボタンのセルがあるテーブルの行に応じて、ボタンの動作が異なるようにしたいだけです。その行インデックスを取得するにはどうすればよいですか?
オブジェクト階層の基本的な理解が不足していると思われるかもしれませんが、ご容赦ください。
ありがとうシャケリエン
最初にデータを設定していないと、それは間違いなく簡単ではありません。可能であればNSDictionary
、ボタンがキーで値がインデックスパスである場所を用意します。これは、からセルを返すたびに更新され-tableView:cellForRowAtIndexPath:
ます。このようなもの:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
...
[indexDict setValue:indexPath forKey:theButton];
return cell;
}
- (void) buttonPressed:(UIButton *)button {
NSIndexPath *indexPath = [indexDict valueForKey:button];
...
}
タグを維持できます。ボタンをドラッグ アンド ドロップするときに、インターフェイスのビルドを確認すると、これらのボタンの「タグ」プロパティが表示されます。ボタンごとに異なる値を割り当てます(行ごとに異なるボタンがあると仮定します。異なる行に同じセル識別子がある場合、このソリューションは機能しません)。そして、タグ値のイベントチェックを受け取ったとき。私の仕事でも同様の問題があり、作成されたボタンタグごとに NSArray を維持していました。
別の方法は、ビュー内のUIButtonの基本クラスを変更してから、この他のクラスを使用して、基本的に追加されたNSInteger行@propertyでUIButtonを拡張することです(@synthesizeを忘れないでください)。
次に、セルのセットアップ中にこのプロパティを設定し、メッセージメソッド内でこのプロパティを取得できます。
tableViewデリゲートとデータソースメソッド(ドキュメントを確認してください!)にはいくつかのメソッドがありますが、これに最適なメソッドは次のとおりです。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
このメソッドを実装にドロップして、次のように言います
switch (indexPath.row) {
case 0:
//set variable or do method based on row 0 (first row)
break;
case 1:
//set variable or do method based on row 1 (second row)
break;
case 2:
//set variable or do method based on row 2 (third row)
break;
}//and so on
}