Прозрачный фон для commitEditingStyle - PullRequest
1 голос
/ 17 января 2012

Когда после удаления третьей ячейки появляется кнопка удаления, фон обрезается. Как я могу это исправить? вот код при создании пользовательской ячейки.

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:    
      (NSIndexPath *)indexPath
     {
         static NSString *CellIdentifier = @"customCell";

         BookMarksCustomCell *cell = (BookMarksCustomCell *)[tableView  
         dequeueReusableCellWithIdentifier:CellIdentifier];

        if (cell == nil) {

            NSArray * topLevelObjects = [[NSBundle mainBundle]  
            loadNibNamed:@"BookMarksCustomCell" owner:self options:nil];

        for(id currentObject in topLevelObjects)
        {
            if([currentObject isKindOfClass:[UITableViewCell class]])
            {
                cell = (BookMarksCustomCell *)currentObject;
                break;
            }
         }        
    }

    .....more logic stuff.

    //alternating cell background.
    if([indexPath row] % 2 == 0)
        cell.contentView.backgroundColor = [UIColor colorWithRed:234.0/255.0 
        green:234.0/255.0 blue:234.0/255.0 alpha:1.0];

    ......
   }

http://i228.photobucket.com/albums/ee262/romano2717/photo3.png

1 Ответ

3 голосов
/ 17 января 2012

Ваш код изменяет цвет фона свойства contentView ячейки. Размер этого вида изменяется при появлении кнопки удаления, поэтому вам нужно вместо этого установить цвет фона самой ячейки (которая также является подклассом UIView). Это должно это исправить.

Кроме того, чтобы учесть повторное использование ячеек и изменение индексов, вы должны установить цвет фона независимо от того, является ли текущая ячейка четной или нечетной. Всегда явно устанавливайте цвет на что-либо (даже если он белый), чтобы при прокрутке не возникали странные эффекты с повторно используемыми ячейками.

Я также только что заметил в UITableViewCell документах это примечание:

Если вы хотите изменить цвет фона ячейки (устанавливая цвет фона ячейки через свойство backgroundColor, объявленное UIView), вы должны сделать это в tableView: willDisplayCell: forRowAtIndexPath: метод делегата, а не в tableView: cellForRowAtIndexPath: источника данных.

Итак, сделайте это вместо этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...