在我的iOS应用中,我有两个 NSMutableArray
@implementation MyViewController {
NSMutableArray *arrOne;
NSMutableArray *arrTwo;
}
在我的实施文件中声明,一个 UITableView
@property (strong, nonatomic) IBOutlet UITableView *tableView;
在 MyController.h
中声明我想要的是将这些数组内容加载到同一个表中,其中首先是 arrOne 内容,然后是 arrTwo 。
以下是我获取表行数的方式
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if ([arrOne count] > 0 && [arrTwo count] > 0) {
return [arrOne count] + [arrTwo count];
} else if ([arrTwo count] > 0) {
return [arrTwo count];
} else {
return 10;
}
}
以下是我尝试创建表格单元格的地方
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"myTable";
if ([arrOne count] > 0 && [arrOne count] > indexPath.row) {
UITableViewCell *defaultCell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (defaultCell == nil) {
defaultCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
return defaultCell;
} else {
MyTableViewCell *cell = (MyTableViewCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyTableCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
return cell;
}
}
使用上面的代码,假设 arrOne 只有一个元素, tableView 应该显示第一个单元格white,所有其他单元格显示我的自定义单元格。相反,它显示,第一个细胞白色如预期的那样,中间的一些细胞(5,9,13 ......)也是白色的。无法确定原因。知道为什么吗?
如果这不是在单个表视图中实现两个数组的正确方法,它是什么?
答案 0 :(得分:0)
如果arrOne
只包含一个元素(正如您所说)并且arrTwo
为空,那么根据numberOfRowsInSection
,您将拥有10个总单元格。第一个单元格将是UITableViewCellStyleDefault
单元格,接下来的9个单元格应为MyTableViewCell
单元格。
您看到多个UITableViewCellStyleDefault
单元格的原因是因为您使用的是相同的单元格标识符。在每个if
/ else
语句中移动您的ID声明,并为每个单元格类型使用不同的标识符。
if ([arrOne count] > 0 && [arrOne count] > indexPath.row) {
static NSString *defaultTableIdentifier = @"defaultReuse";
UITableViewCell *defaultCell = [tableView dequeueReusableCellWithIdentifier:defaultTableIdentifier];
if (defaultCell == nil) {
defaultCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:defaultTableIdentifier];
}
return defaultCell;
} else {
static NSString *simpleTableIdentifier = @"myCustomCellReuse";
MyTableViewCell *cell = (MyTableViewCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyTableCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
return cell;
}
(另外,您的Nib名称是否与类名不同?MyTableViewCell
vs MyTableCell
。因为您声明了类MyTableViewCell
的单元格,然后加载名为{{1的nib }}。)