Iphone 左&x2B;UITableView单元格中的右对齐文本,在滚动表格时中断
我的目标是在同一单元格中显示两个字符串,一个左对齐,另一个右对齐。我附带的代码在表视图中就是这样做的,但是当你向上/向下滚动时,它就会中断。我需要这个工作在一个表,可以滚动。有人提到用CustomUITableViewCells代替我目前的方法,有人能给我举个例子吗Iphone 左&x2B;UITableView单元格中的右对齐文本,在滚动表格时中断,iphone,objective-c,uitableview,Iphone,Objective C,Uitableview,我的目标是在同一单元格中显示两个字符串,一个左对齐,另一个右对齐。我附带的代码在表视图中就是这样做的,但是当你向上/向下滚动时,它就会中断。我需要这个工作在一个表,可以滚动。有人提到用CustomUITableViewCells代替我目前的方法,有人能给我举个例子吗 // Customize the appearance of table view cells. - (UITableViewCell *)tableView:(UITableView *)tableView cellFor
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
UILabel *rank = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 100, 20];
[rank setTag:5];
[cell.contentView addSubview:rank];
[rank release];
UILabel *item = [[UILabel alloc] initWithFrame:CGRectMake(110, 5, 220, 20];
[item setTextAlignment:UITextAlignmentRight];
[item setTag:6];
[cell.contentView addSubview:item];
[item release];
}
UILabel *rank = (UILabel *)[cell viewWithTag:5];
UILabel *item = (UILabel *)[cell viewWithTag:6];
rank.text = @"leftside";
item.text = @"rightside";
}
Any ideas and thoughts greatly appricated, thanks for lookin
此问题是由于
dequeueReusableCellWithIdentifier
造成的。当重新使用单元格时,上下滚动会导致重大问题,因为标签作为子视图添加到单元格中,它们没有单元格的属性。但是,如果使用cell.textLabel
作为标签,则不会导致像现在这样的问题,但不能添加多个标签
您有两种解决方案
cellIdentifier
,并对每个单元格使用不同的标识符,以便它们不会被重用。如果tableView
中的行数非常少,这将很有帮助,否则会导致效率低下UITableViewCell
并在其代码中添加这两个标签,然后将该UITableViewCell与dequeueReusableCellWithIdentifier一起使用。这只是一小部分工作,你可以重复使用电池。如果tableview中有大量行,这将非常有用
浏览以了解如何使用2个标签对UITableViewCell
进行子类化
您需要使用方法-(void)layoutSubviews
,并将这些标签添加到自定义的UITableViewCell
子类中
表视图时,请记住引用此customUITableViewCell
,而不是默认的uitableviewcell。您的ui标签将不再混乱
.我会使用自定义的UITableViewCell
。最简单的方法是下载一个示例项目,然后复制并粘贴以查看如何设置自定义单元格。一个很好的教程,包括一个示例项目。您可以在cellforrowatinexpath
方法中使用if(indexPath.row==int)
来确定哪些单元格应该是标准单元格,哪些应该是您的自定义单元格,我粘贴了与您发布的代码相同的代码,我收到了2个编译器错误,其中提到了在UILable的分配中缺少),并且我已经清除了它,它被编译并成功启动
由于datasource方法,我遇到的唯一异常和崩溃是不返回任何单元格。这在给定的代码中也是缺失的
除此之外,代码在我这端工作得很好,即使我滚动了很多次,也没有一次崩溃
所以,只需再次验证您的代码,否则array提供的数据源可能会出现另一个问题,同时还要检查第节中的行数。Legolas,非常感谢您的帮助。使用一个子类UITableViewCell,我可以让所有东西都按我的意愿工作,这也大大简化了我的设计。你提供给iPhoneNoob教程的链接真的帮助我点击它。