web-dev-qa-db-ja.com

UITableviewで選択された行のタイトルを取得する方法

各セルにいくつかの名前が付いたテーブルビューがありますが、行を選択したときにその名前を取得するにはどうすればよいですか?

私はデリゲートメソッドを使用する必要があることを知っています

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

しかし、どうすればその行のタイトルを取得できますか?

前もって感謝します

よろしく

17
appleDE
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
    NSString *cellText = selectedCell.textLabel.text;
}

このスニペットは、選択したセルを取得し、そのtextプロパティをNSStringに格納します。


ただし、これはお勧めしません。データ層とプレゼンテーション層を分離しておくことをお勧めします。バッキングデータストア(配列など)を使用し、渡されたindexPathオブジェクトのデータ(配列へのアクセスに使用するインデックスなど)を使用してアクセスします。このデータストアは、テーブルへの入力に使用されるものと同じになります。

54
Evan Mulawski

標準のUITableViewCellを使用しているとすると、次を使用してセルを取得できます。

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];

次に、次の方法でテキストプロパティビューのプロパティにアクセスします。

cell.textLabel.text
cell.detailTextLabel.text
9
Rog

次の(uitableview-)関数を使用して、uitabelviewの各行にアクセスできます。

cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]

ちなみに、uitableviewのデリゲートメソッド以外のメソッドでテーブルビューにアクセスするには、IBに接続する必要があります(たとえば..)

それが役に立てば幸い

2
Tom

ITableView デリゲートプロパティを介してクラスの1つをデリゲートとして登録したら、ユーザーが行を選択したときに呼び出されるtableView:didSelectRowAtIndexPath:メソッドを実装するだけです。 (詳細については、 ITableViewDelegateプロトコルリファレンス を参照してください。)

次に、選択したセルからラベルテキストを抽出できます...

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
        NSString *cellLabelText = cell.textLabel.text;
    }

..これが本当に必要なものである場合。

2
John Parker
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

    NSString *rowTitle=[tableView cellForRowAtIndexPath:indexPath].textLabel.text;   
}

ここに、

[tableView cellForRowAtIndexPath:indexPath]は選択されたセルを提供し、次に.textLabel.textはそのセルのラベルを提供します。

0
Natasha