我有包含UITableView
的XIB,并且在同一个XIB中我创建了UITableViewCell,我没有将任何类设置为单元格,我只是将标识符设置为单元格。
现在我想将该单元格加载到tableview委托方法cellForRowAtIndexPath
- (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];
}
return cell;
}
但是它会创建一个不包含我创建的xib的新单元格。
那么如何从表格视图中的相同xib获取该单元格呢?
答案 0 :(得分:0)
如果你正在创建一个自定义单元格,那么如果你创建UITableViewCell类型的自定义类然后在方法中实例化你的UITableViewCell类会更好。如果你不想创建自定义类,那么下面是可以帮助你的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CustomCellIdentifier = @"SimpleTableItem";
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CustomCellIdentifier];
if (cell == nil)
{
cell = (UITableViewCell *)[[[NSBundle mainBundle] loadNibNamed:@"TMPartnerLoyalty" owner:self options:nil] objectAtIndex:0];
}
return cell;
}
此处,TMPartnerLoyalty是xib的名称。
答案 1 :(得分:0)
请在viewdidload中编写此代码,希望它对您有用。
NSString *nibName = @"give your xib name here that contain Tablecell";
NSString *simpleTableIdentifier = @"SimpleTableItem";
UINib *customCellNib = [UINib nibWithNibName:nibName bundle:nil];
[tableView registerNib:customCellNib forCellReuseIdentifier:simpleTableIdentifier];
答案 2 :(得分:0)
如果您使用原型单元格,则标识符名称必须与dequeueReusableCellWithIdentifier名称相同
注意:如果您使用原型单元格,则不需要注册单元格。因为原型单元格不是CustomCell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if(cell == nil)
{
cell =[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.text = @"";
return cell;
}
如果您使用UITableViewcell(自定义单元格),请按照以下步骤
1.在viewDidLoad中,您必须注册UITableViewCell或Custom Cell
UINib *cellNib = [UINib nibWithNibName:@"YourUITableViewCell" bundle:[NSBundle mainBundle]];
[self.tableView registerNib:cellNib forCellReuseIdentifier:@"cell"];
2.OR在cellForRowAtIndexPath中你可以像这样编写下面的代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *customTableIdentifier=@"cell";
YourUITableViewCell *cell=(YourUITableViewCell*)[tableView dequeueReusableCellWithIdentifier:customTableIdentifier];
if (cell==nil)
{
NSArray *nibs=[[NSBundle mainBundle]loadNibNamed:@"YourUITableViewCell" owner:self options:nil];
cell=[nibs objectAtIndex:0];
}
cell.yourTableViewCellLabel.text = @"";
cell.yourTableViewCellTextField.text = @"";
cell.yourTableViewCellButton.text = @"";
return cell;
}