テーブルビューでカスタムセルを使う。

平成26年9月1日(月曜日)〜

XIBファイル作成
file → new → user interface → empty
uitablebiewcellドラッグ
label ドラッグ
button ドラッグ
設定 custom
設定 identifier Cell

CLASSファイル作成
TableViewCustomCell

両者のリンク
@property (weak, nonatomic) IBOutlet UILabel *str1;
@synthesize str1;

segue設定(showDetail)

UIViewController

@property (strong, nonatomic) IBOutlet UITableView *tableView;

TableViewContoroller.m

#import TableViewCustomCell.h;

nibにて使用

static NSString * const TableViewCustomCellIdentifier = TableViewCustomCell;

viewdidload

- (void)viewDidLoad
{
[super viewDidLoad];
// カスタマイズしたセルをテーブルビューにセット
UINib *nib = [UINib nibWithNibName:TableViewCustomCellIdentifier bundle:nil];
[self.tableView registerNib:nib forCellReuseIdentifier:@"Cell];
//[self.searchDisplayController.searchResultsTableView registerNib:nib forCellReuseIdentifier:@"Cell];
}

cellForRowAtIndexPath

// テーブルセル表示① cellForRowAtIndexPath
//- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- (TableViewCustomCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    // 重要 カスタムセル
    //TableViewCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier ];
    TableViewCustomCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier ];

    /*
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    */

    if (cell == nil) {
        cell = [[TableViewCustomCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
    }

    [self configureCell:cell atIndexPath:indexPath];
    return cell;
}

heightForRowAtIndexPath

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return [TableViewCustomCell rowHeight];
}

didSelectRowAtIndexPath

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// The table view should not be re-orderable.
//NSLog(@"push");

// セグエで画面遷移させる → prepareForSegueが発生
//prepareForSegueが発生
[self performSegueWithIdentifier:@"showDetail" sender:self.tableView];
}

configureCell

- (void)configureCell:(TableViewCustomCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
NSManagedObject *object = [self.fetchedResultsController objectAtIndexPath:indexPath];
//cell.textLabel.text = [[object valueForKey:@"timeStamp"] description];
cell.name.text = [[object valueForKey:@"timeStamp"] description];

}