1

15個のセルを持つUITableViewがあり、それぞれに個別のテキストボックスがあります。UITextViewDelegateを実装しましたが、textViewDidChangeなどを使用して変更されたtextviewデータを受信できます。しかし、まだ1つの大きな問題があります。どのテキストビューがこれを送信したかをどのように知ることができますか(つまり、どのセルでテキストビューが変更されたか)。

たくさんの仕事をしているのに、それがどこから来ているのか正確にはわからないのは興味深いことです。

必要に応じて、大量のコードを利用できます。

よろしく@norskben

コード

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];

        //Big Text Box
        UITextView *detailLabel = [[UITextView alloc] initWithFrame:CGRectMake(30, 80, CONST_Cell_width, 150)];
        detailLabel.tag = 20;
        [cell.contentView addSubview:detailLabel];

    }   


UITextView * detailLabel = (UITextView *) [cell.contentView viewWithTag:20];
4

5 に答える 5

2

タグ(整数)をさまざまなビューに割り当て、タグ番号を照会して、メソッドを呼び出したビューを確認できます。ビューでtagプロパティを探します。

tag

The receiver’s tag, an integer that you can use to identify view objects in your application.

@property(nonatomic) NSInteger tag

ここを参照してください

于 2010-02-22T20:06:29.223 に答える
2

私の開発マシンではありませんが、UITextViewを作成するときに、タグを割り当てることができるはずです。[myTextView setTag:x]だと思います。ここで、xは整数です。

次に、TextViewDidChangeで使用します if (textview.tag == x) { //do something } else if (textview.tag == y) { //do something else and so on }

それが少し役立つことを願っています。

于 2010-02-22T20:07:23.620 に答える
1

テキストビューは、すべてのデリゲートメソッドで自分自身への参照を渡すため、どのメソッドがそれを送信したかがわかります。セルに接続するには、各テキストビューのtagプロパティを、それらが含まれているセルの行に対応する異なる値に設定します。

于 2010-02-22T20:09:16.113 に答える
0

重要な質問は次のとおりです。テキストボックスは静的ですか、それとも時間の経過とともに変化しますか?それらが変更されない場合(ユーザーがセルの数を変更したり、後で追加したりすることはできません)、セルごとに新しいtextFieldを宣言できます。私のアプリには似たようなものがあります。2つのテキストボックスがあり、現在アクティブなtextFieldに応じて、デリゲートは別のことを行います。

ヘッダーで個別のテキストフィールドを宣言します

UITextField *textField1;
UITextField *textField2;
UITextField *textField3;

デリゲートメソッドで、ifステートメントブロックを使用して、変更されているtextFieldを確認します。

if (textField == textField1) {
    //do something
} else if (textField == myTextField2) {
    //something else
}

これは、ビューが静的である場合にのみ実際に機能することに注意してください。

お役に立てれば

すてきな一日を

于 2010-02-22T20:08:02.747 に答える
0

UITableViewのセルでイベントソースUITextViewを検索する場合は、ユーザーが現在表示できるセルのみを繰り返し処理します。これは、次のUITableViewメソッドを使用して取得できます。

- (NSArray *)visibleCells
于 2010-02-22T21:19:43.210 に答える