-1

私のアプリでは、XIB からロードされたカスタム UITableViewCells を使用しています。各セルには、UIImageView、UILabel、UITextField などの 4 つのオブジェクトが含まれています。

各オブジェクトのタグを cellforrowatindexpath に設定して、各オブジェクトに同じタグがあり、これがテーブルビューのセルの行でもあるようにします。

問題は、それらがすべて同じタグを持っている場合、セル内のこれらのオブジェクトにどのようにアクセスすると思いますか? NSIndexPath パラメータを持たないメソッドでこれらのオブジェクトに適切にアクセスするにはどうすればよいですか?

ありがとう!

4

3 に答える 3

2

私は個人的にタグの使用を避けようとしています。これは、通常、完全に混乱するまでタグを使いすぎており、よりエレガントな方法を見つけ始めているためです。たとえば、あなたの状況ではIBOutlet、 customUITableViewCellのオブジェクトの を作成して、それらをより意味的に関連させます。ただし、状況は異なる場合があります。この質問では、これが確実にうまくいくとは言えません。

そうは言っても、次の方法でやろうとしていることを達成できるようです。

  1. メソッドによって返された各セルにcellForRowAtIndexPathタグを付ける (返す前に)
  2. すでに行っているように、セル内の各オブジェクトにタグを付けます

そうすれば、次の方法で(どこからでも)セルのオブジェクト(おそらくUIViews)にアクセスできますUITableViewController

UITableViewCell *cell = (UITableViewCell *)[self.tableview viewWithTag:CELL_TAG];
UIView *objectInCell = [cell viewWithTag:OBJECT_TAG];

これにより、特定のセル内のオブジェクトにアクセスできることに注意してください。すべてのセルのオブジェクトにアクセスしようとしている場合は、それらすべてを単純に繰り返すことができます。ただし、この時点で、これは不必要に複雑になり始めると感じています。この方法でタグ付けを利用して達成しようとしていたことについて、もう少し情報を投稿していただけると助かります。それまでの間、これが役立つことを願っています。

于 2011-12-17T02:26:09.917 に答える
0

すべてのタグに同じ番号を付ける理由はわかりませんが、理由があると思います ([cell1 viewwithTag:0] と [cell2 viewWithTag: 0] はそれらを区別するのに十分なはずです)。

すべての要素に同じタグを付けると、最初からタグ付けする目的が失われますが、タグに行番号を含める必要がある場合 (および結果セットのサイズについて何らかの考えがある場合) は、各要素に次のタグを付けることができます。 ((サイズの倍数) + item# ) 整数 (たとえば、テーブルに保持される結果が 10,0000 未満であることがわかっている場合、各要素を最初の行で 10001、10002、10003、10004 としてタグ付けし、20001、次の 20002、20003、20004 など... 次に、4 行目の 3 番目の要素をアドレス指定するには、[view withTag: 40003] を使用します。

于 2011-12-17T02:26:10.103 に答える
-1

このメソッドを使用して、選択したセルの行にアクセスできます。

NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]

しかし、これがあなたの質問に答えるかどうかはわかりません。もっと具体的にお願いします。

于 2011-12-17T02:25:26.953 に答える