Я использую UITableView, и я замечаю, что ячейки в моем табличном представлении становятся более смелыми по мере прокрутки, это переписывание содержимого, и я хочу остановить это, но не вижу, где я ошибаюсь.
В моем UITableView по какой-то причине, когда я просматриваю содержимое таблицы, перепутаюсь с созданной вручную UILabel.
Мне требуется ручная UILabel, потому что мне нужно иметь пользовательские ячейки позже.
Когда я просматриваю вверх и вниз, ярлыки становятся все более смелыми и смелыми; они всегда перекрываются, а иногда даже влияют на строки ниже (даже до того, как они находятся в окне просмотра).
Если я продолжаю это делать, содержимое ячеек становится непонятным.
Это происходит только в том случае, если backgroundColor не установлен как clearColor
.
Я попытался [cellLabel setClearsContextBeforeDrawing:YES];
и [self.tableView setClearsContextBeforeDrawing:YES];
не работать.
Если я использую cell.textLabel.text
, то проблема, похоже, исчезнет.
Далее следует код и образец изображения.
// Simple table view
- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// Configure the cell...
//[self configureCell:cell atIndexPath:indexPath];
NSString *txt = @"Product";
//cell.textLabel.text = txt;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
UIView *cellView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, cell.frame.size.height)];
UILabel *cellLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 10, 120, 35)];
[cellLabel setText:txt];
[cellLabel setFont:[UIFont boldSystemFontOfSize:12]];
[cellLabel setBackgroundColor:[UIColor clearColor]];
[cellView addSubview:cellLabel];
[cellLabel release];
[cell.contentView addSubview:cellView];
[cellView release];
return cell;
}
Image follows;
![image of uitableview][1]
[1]: http://i.stack.imgur.com/5lNy6.png
// Edit to include context
I am using a dictionary to display the contents of the UITableViewCells.
I have attempted to do the following;
- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
[self configureCell:cell atIndexPath:indexPath];
} // end if
// Configure the cell...
//
// Moved to inside the cell==nil
return cell;
}
-(void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
// Get the txt from the Dictionary/Plist... *removed due verboseness*
UILabel *cellLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 10, 120, 35)];
[cellLabel setText:txt];
[cellLabel setFont:[UIFont boldSystemFontOfSize:12]];
[cellLabel setBackgroundColor:[UIColor clearColor]];
[cell.contentView addSubview:cellLabel];
[cellLabel release];
}
Это, хотя и устраняет проблему перезаписи - это вызывает проблему - это делает метки неоднократно отображаться в абсолютно случайных местах - вот лишь пример, другие повторяющиеся поля и метки.
См. рисунок ниже;