我有UITableView
显示超过50个自定义设计的单元格。该表显示确定,但如果我滚动表,则不会重复使用单元格。相反,我的应用程序只是不断加载新的单元格,这在我的iPhone 3上非常慢。
可能导致此问题的原因是什么?这是从UITableViewSource.GetCell()
方法
var dequeuedCell=tableView.DequeueReusableCell (identifier);
//try to reuse a previously recycled cell, create a new one if none exists
var cell = (ITimeEntryTableCell)dequeuedCell;
if (cell == null)
{
//load a new cell using the XIB file definition
NSBundle.MainBundle.LoadNib (identifier, tableViewController, null);
cell = tableViewController.DurationCell;
tableViewController.DurationCell = null;
}
谢谢,
阿德里安
编辑:请注意我使用的是Monotouch,而不是客观的C ...
答案 0 :(得分:3)
您是否在xib文件中设置了单元格标识符?如果未设置,则您的单元格不会出列。
答案 1 :(得分:0)
这是完美运作的代码 -
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellID = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
if(cell == nil)
{
[[NSBundle mainBundle] loadNibNamed:@"cell1" owner:self options:nil];
cell = self.oneMessage;
self.oneMessage = nil;
}
return cell;
}
单拍的更新:,试试这个 -
public override UITableViewCell GetCell(UITableView tableView, MonoTouch.Foundation.NSIndexPath indexPath)
{
UITableViewCell cell = tableView.DequeueReusableCell(this._cellIdentifier);
myTableViewCell mycell = null;
if (cell == null)
{
mycell = new myTableViewCell();
NSBundle.MainBundle.LoadNib("RootViewController", _controller, null);
_controller.myTableCell = new myTableViewCell();
mycell = _controller.myTableCell;
cell = new UITableViewCell(UITableViewCellStyle.Subtitle, this._cellIdentifier);
}
else
{
mycell = (myTableViewCell)cell;
}
答案 2 :(得分:0)
在界面中,声明:TableViewCell * aCell
,并尝试使用此方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; {
static NSString * CellIdentifier = @"TableViewCell";
TableViewCell * cell = (TableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil]; // hooks up cell for us.
cell = aCell;
}
return cell;
}
希望有帮助!
答案 3 :(得分:0)
确保“标识符”是NSString,因为它可以在内部用作标记,而不是字符串内容比较。
所以:
NSString identifier = new NSString(“myID”);