我已经使用Xib创建了一个Custom UITableView类。
在我的-cellForRowAtIndex
下面编写代码。
问题是推送包含此TableView
的屏幕需要2-3秒。
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"myCell";
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
if(!indexPath.row)
{
UIView *separatorView = [[UIView alloc]initWithFrame:CGRectMake(20,14, ScreenWidth-40, 1)];
separatorView.backgroundColor = [UIColor colorWithWhite:0.4 alpha:0.6];
[cell addSubview:separatorView];
self.view.backgroundColor = [UIColor whiteColor];
}
else
{
UIView *separatorView = [[UIView alloc]initWithFrame:CGRectMake(20,6, ScreenWidth-40, 1)];
separatorView.backgroundColor = [UIColor colorWithWhite:0.4 alpha:0.6];
[cell addSubview:separatorView];
self.view.backgroundColor = [UIColor whiteColor];
}
tableView.scrollEnabled = YES;
self.view.backgroundColor = [UIColor whiteColor];
return cell;
}
我调试了代码当我返回numberOfRows
0时,我的屏幕立即被推送。即使我返回1行,也需要2-3秒才能加载。
我正在以编程方式创建tableView
。
修改
我在创建我的表之后在我的viewDidLoad
中添加了这个:
UINib *cellNib = [UINib nibWithNibName:@"CustomCell" bundle:nil];
[mTableView registerNib:cellNib forCellReuseIdentifier:@"myCell"];
和CellForRowAtIndex方法:
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"CustomCell"];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
if(cell == nil){
cell = (CustomCell *)[[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil] lastObject];
[cell setRestorationIdentifier:@"myCell"];
self.view.backgroundColor = [UIColor whiteColor];
}
但是,有什么浪费
答案 0 :(得分:0)
您需要使用该重用标识符注册加载的nib一次,以便表视图可以使用该标识符进行双击,当前使用标识符进行的dequeing是我的所有时间返回nil。
最好的位置是使用
注册nib在[self.tableView registerNib:cellLoadedFromNib forCellReuseIdentifier:@"myCell"];
中
cellForRowAtIndexPath:
然后使用以下
在[tableView dequeueReusableCellWithIdentifier:@"myCell" forIndexPath:indexPath];
中访问它
{{1}}
确保在启动tableView后在tableView中注册nib。
答案 1 :(得分:0)
如果这是你所声称的,那么问题可能是你没有在主线程上执行[tableView reloadData]
。您可以通过调用当前正在调用[tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO]
方法的reloadData
来解决此问题。
答案 2 :(得分:0)
你在-cellForRowAtIndexPath方法中编写代码
tableView.scrollEnabled = YES;
self.view.backgroundColor = [UIColor whiteColor];
负载在主踏板上和每个单元中加载主视图的背景设置次数
在-viewdid load
中编写代码