我有两个UITableView
,我想为UITableView
使用相同的自定义单元格。
问题是其中只有一个工作正常。只有第一个表显示行。
当我调试时,我看到第二个表的cell.lb_subject是nil。
MyCustomCell仅在第一个表中被定义为原型单元(不是xib),因为我没有看到两次定义同一行的要点。
- (UITableViewCell *)tableView:(UITableView *)mytableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"MyCustomCell";
MyCustomCell *cell = [mytableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[MyCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
MyRowData* data = [tableData objectAtIndex:indexPath.row];
cell.lb_subject.text = data.subject;
答案 0 :(得分:0)
按照此步骤操作。
您的ViewController
ViewController.h
NSMutableArray *tableData;
ViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
tableData = [[NSMutableArray alloc]initWithObjects:@"test1",@"test2",@"test3",nil];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [tableData count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//Here MyCustomCell is identifier for both tableview cell.
static NSString *simpleTableIdentifier = @"MyCustomCell";
//tblCell is your custom tableview cell.
tblCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[tblCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
cell.lb_subject.text = [tableData objectAtIndex:indexPath.row];
return cell;
}
您的自定义单元格
tblCell.h
//Here lb_subject is common Outlet for both label of both cell.
@property (strong, nonatomic) IBOutlet UILabel *lb_subject;
答案 1 :(得分:0)
将Tag添加到两个表中,然后分别对两个表使用dequeueReusableCellWithIdentifier。
if (tableView.tag==1) {
static NSString *simpleTableIdentifier = @"MyCustomCell";
MyCustomCell *cell = [mytableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[MyCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
MyRowData* data = [tableData objectAtIndex:indexPath.row];
cell.lb_subject.text = data.subject;
return cell;
}
else {
static NSString *simpleTableIdentifier = @"MyCustomCell";
MyCustomCell *cell = [mytableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[MyCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
MyRowData* data = [tableData objectAtIndex:indexPath.row];
cell.lb_subject.text = data.subject;
return cell;
}
答案 2 :(得分:0)
您尚未在其他表中添加单元格 如果您不想为viewController 2创建另一个原型单元格,则需要使用XIB
注册您的XIB:
在ViewDidload
而非cellForRow
[self.tableView registerNib:[UINib nibWithNibName:@"CustomCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"CustomCell"];
和
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCell"];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
cell = (CustomCell *)[topLevelObjects objectAtIndex:0];
}
cell.cellLabel.text = _arrData[indexPath.row];
return cell;
}
如果您仍面临同样的问题,请告诉我
答案 3 :(得分:0)
我想在customCell类中使用tableView注册单元格。像这样的东西
class func cellForTableView(tableView: UITableView, atIndexPath indexPath: NSIndexPath) -> YourCustomTableViewCell {
let kYourCustomTableViewCellIdentifier = "kYourCustomTableViewCellIdentifier"
tableView.registerNib(UINib(nibName: "YourCustomTableViewCell", bundle: NSBundle.mainBundle()), forCellReuseIdentifier: kYourCustomTableViewCellIdentifier)
let cell = tableView.dequeueReusableCellWithIdentifier(kYourCustomTableViewCellIdentifier, forIndexPath: indexPath) as! YourCustomTableViewCell
return cell
}
您可以看到更详细的答案Here。
答案 4 :(得分:0)
我猜你的每张桌子都有两个原型单元。
让我们说,表A - “CustomCellA”&对于表B - “CustomCellB”
customCell的父类应该是相同的。
现在在cellForRowAtIndexPath中写下代码,
MyCustomCell *cell;
if (tableView == tableViewA)
cell = [mytableView dequeueReusableCellWithIdentifier:@"CustomCellA"];
else
cell = [mytableView dequeueReusableCellWithIdentifier:@"CustomCellB"];
应该为两个tableview找到您的单元格的出口和属性。
让我知道结果。
谢谢,希望这有帮助。