2010-12-14 8 views
17

各セルにいくつかの名前を持つtableviewがありますが、行を選択するとその名前はどのように取得できますか?UITableviewで選択された行のタイトルを取得する方法

私は

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

をデリゲートメソッドを使用する必要がありますが、どのように私は、その行のタイトルを得ることができることを知っていますか?事前に

おかげ

よろしく

+0

行にはタイトルがありません。あなたは何をしようとしているのですか? –

+0

UItableviewの各セルを意味します – appleDE

答えて

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

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


私はこのをお勧めしません。データレイヤーとプレゼンテーションレイヤーを別々に保つ方が良いです。バッキングデータストア(配列など)を使用し、渡されたindexPathオブジェクトのデータ(配列にアクセスするために使用するインデックスなど)を使用してアクセスします。このデータストアは、テーブルにデータを格納するために使用されるものと同じものです。

+0

恐ろしい!どうもありがとう。 – iDev

9

あなたは、標準のUITableViewCellを使用していると仮定すると、あなたはその後、経由textプロパティビューのプロパティにアクセス

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

を使用してセルを取得することができます:

cell.textLabel.text 
cell.detailTextLabel.text 
+0

これは何ですか? :-) – Eiko

+0

それは何ですか? – appleDE

+0

(+1)小さな誤植でさえ私には役に立ちます。コードでは、それはUITableViewCellであり、あなたはUITableViewを記述します(ただし、上記のテキストに正しく記述してください)。 – HpTerm

2

代理人としてUITableView代理人プロパティを使用してクラスの1つを登録したら、ユーザーが行を選択したときに呼び出されるtableView:didSelectRowAtIndexPath:メソッドを実装するだけです。 (詳細についてはUITableViewDelegate Protocol Referenceを参照してください。)

を、これはあなたが必要とするものは本当にある..ifあなたはその後、

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

...を経由して、選択したセルからラベルテキストを抽出することもできます。あなたは、以下の(uitableview-)関数で使用してuitabelviewの各行にアクセスすることができます

3

:のUITableViewのデリゲートメソッド以外の方法であなたのテーブルビューにアクセスするには、方法によって

cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] 

を、あなたはそれをフックアップする必要がありますIBに(例えば...)

は、それがここ

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

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

役に立てば幸い

[tableView cellForRowAtIndexPath:indexPath]は選択したセルを表示し、.textLabel.textはそのセルのラベルを表示します。

関連する問題