0

カスタム コードを入力して、UITableViewCell の Label プロパティの値を変更する場所を知りたいです。

ViewDidLoad および (id)initWithStyle インスタンス メソッドに NSLog を配置しましたが、どちらもログに書き込まないため、これがどのように読み込まれるかはわかりません。

NIB とカスタム クラスをすべて正しくリンクしてセットアップしました。Label はプロパティとしてリンクされ、エラーは発生しなくなりました。しかし、テキストを設定できません。

カスタム セルの呼び出し方法は次のとおりです。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
LeftMenuTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {

    NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"LeftMenuTableViewCell" owner:nil options:nil];

    for (UIView *view in views) {
        if([view isKindOfClass:[UITableViewCell class]])
        {
            cell = (LeftMenuTableViewCell*)view;

        }
    }
}

return cell;
}

これは、LeftMenuViewCell クラスの IMP ファイル内のコードです。

-(void)viewDidLoad {

displayName.text = [self.user objectForKey:@"displayName"];

displayName を文字列に設定できますが、これも変更されません。カスタムセルクラスのviewDidLoadにNSLogを追加すると、ロードされていないように表示されませんが、セルはロードされています...?

4

3 に答える 3

1

コードの詳細がなければ、あいまいな答えしかできません。

カスタム セルは をサブクラス化する必要がUITableViewCellあり、データ ソース メソッドがtableView:cellForRowAtIndexPath:.

sでセルを追加/使用する方法について読むことをお勧めしますUITableView: http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html#//apple_ref/doc /uid/TP40007451-CH7-SW1

于 2012-10-27T22:35:28.057 に答える
0

testLabelと呼ばれるUILabelを持つカスタムUITableViewCellがあるとしましょう。NIBとカスタムクラスが適切にリンクされている場合は、次のコードを使用できます。

MyTableViewCell.h

@interface MyTableViewCell : UITableViewCell

@property (nonatomic, assign) IBOutlet UILabel *testLabel;

@end

UITableViewControllerまたはUIViewControllerのcellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {
      static NSString *CellIdentifier = @"MyTableViewCellId";
      MyTableViewCell *cell = (MyTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

      if (cell == nil) {
          NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"MyTableViewCell" owner:self options:nil];
         cell = [topLevelObjects objectAtIndex:0];    
      }

      [cell.testLabel.text = [_dataSource objectAtIndex:[indexPath row]]];

      return cell;
}

それが役に立てば幸い :)

于 2012-10-28T16:14:21.830 に答える
0

例えば

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


 RouteCell *routeCell = [self.tableView dequeueReusableCellWithIdentifier:routeIdentifier];

if (routeCell == nil) {
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"RouteCell" owner:nil options:nil];
    routeCell = [nib objectAtIndex:0];
}

routeCell.travelTime.text = @"Here you are setting text to your label";

return routeCell;
于 2012-10-27T22:37:17.360 に答える