客製化TableViewCell, 照著這3篇做,就成功了,還滿簡單的。
[iOS] 客製化TableViewCell (Custom TableViewCell)
https://cg2010studio.com/2013/05/09/ios-%E5%AE%A2%E8%A3%BD%E5%8C%96tableviewcell-custom-tableviewcell/
Customize Table View Cells for UITableView
http://www.appcoda.com/customize-table-view-cells-for-uitableview/
Customize Table View Cells for UITableView in iOS
http://www.theappguruz.com/blog/customize-table-view-cells-uitableview-ios
實作出來的結果:
如果是使用標準的內建cell:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *simpleTableIdentifier = @"SimpleTableItem"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier]; } cell.textLabel.text = [tableData objectAtIndex:indexPath.row]; cell.imageView.image = [UIImage imageNamed:[thumbnails objectAtIndex:indexPath.row]]; return cell; }
程式碼:
#pragma mark - TableView events - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ // Return the number of sections. return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return [userArray count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"IMUserCell"; //UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; IMUserCell *cell = (IMUserCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil){ NSArray *cells = [[NSBundle mainBundle] loadNibNamed:@"IMUserCell" owner:self options:nil]; cell = [cells objectAtIndex:0]; } //Configure the cell. //cell.textLabel.text = [self.colorNames objectAtIndex:[indexPath row]]; UserInfo *user = [userArray objectAtIndex:[indexPath row]]; [cell.textLineID setText:user.line_id]; [cell.textCountry setText:user.country_code]; [cell.textMessage setText:user.message]; if(user.tag1 && user.tag1.length > 0) { NSString *gameTitle = NSLocalizedString(user.tag1, nil); cell.btnTag1.layer.cornerRadius = 5; [cell.btnTag1 setTitle:gameTitle forState:UIControlStateNormal]; } else { [cell.btnTag1 setHidden:YES]; } if(user.tag2 && user.tag2.length > 0) { NSString *gameTitle = NSLocalizedString(user.tag2, nil); cell.btnTag2.layer.cornerRadius = 5; [cell.btnTag2 setTitle:gameTitle forState:UIControlStateNormal]; } else { [cell.btnTag2 setHidden:YES]; } cell.userPhoto.image = [UIImage imageNamed:@"icon_user_photo_default.png"]; return cell; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 60; }