2011-05-16 5 views
1

私はプログラムでカスタムUITableViewCellを実装しました。ここではcellforindexpathにUIButtonとUILabelを作成しました。iOS:UITableViewCellのUIButtonとUILabel

UIButtonについては、addTarget:action:forControlEvents:メソッドを使用して、サーバーのUILabelテキストを更新するHTTP POST要求を行う別のメソッドを呼び出しました。しかし、今では、アプリケーションをリロードする代わりに、UILabelのテキストを更新したいと考えています。

どうすればよいですか?

私が持っている問題は、UILabelとUIButtonが両方ともUITableViewCellのサブビューであるため、それらの間に直接通信がないことです。

答えて

1

あなたが作成したカスタムセルのラベルとボタンをフィールドにすると思います。カスタムセルでもアクションハンドラを作成すると、ラベルに簡単にアクセスできます。あなたがInterface Builderのを使用してカスタムセルを実装することができます

CustomCell.h

UIButton *button; 
    UILabel *label; 
    -(IBAction) updateLabel:(id) sender; 

CustomCell.m

更新

//[button addAction:@selector(updateLabel) target:self]; 
-(IBAction) updateLabel:(id) sender{ 
[self.label setText:@" text"]; 
} 

: それはそのようなものになるだろう。 Interface Builderからボタンにアクションを接続することもできます。アクションプロトタイプをヘッダファイルに移動する必要があります。そのファイルの所有者をViewTableControllerに設定して、そのセルをロードします。 は、その後、あなたがそのようにカスタムセルを読み込むことができTableViewController上とデリゲートメソッドにカスタムセルのための出口を作る:

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

    static NSString *cell_identifier = @"Cell"; 
    CustomCell *cell; 
    cell=(CustomCell*)[table_view dequeueReusableCellWithIdentifier:cell_identifier]; 
    if (cell==nil) { 
     self.customCell=nil; 
     [[NSBundle mainBundle] loadNibNamed:@"custom_cell" owner:self options:nil]; 
     cell=self.customCell; 
    } 
} 
+0

何CustomCellクラスがありませんので、私はプログラム的にUIButtonとUILabelをプログラムし...と、別のがあります方法? – SuperString

+0

私はこのようにしてみましたが、CustomCellはUITableViewのサブビューだったので難しかったので、複雑でした。 – SuperString

+0

Sarah - Appleの現在のスタイルに合わせて、ラベルをカスタムセルのプロパティにするだけです。また、プレースホルダオーナオブジェクトを必要とせずにUINibを使用して直接セルをロードすることもできます。 – nielsbot

関連する問題