Я использую пользовательский UITableViewCell в своем приложении, и все работает нормально, пока я не начал использовать iOS 8. Весь мой собственный класс уменьшает ширину строк таблицы, поэтому я получаю некоторый запас слева и справа от экрана iPhone.Ошибка при использовании пользовательских объектов UITableViewCell в iOS 8
Вот интерфейс для моего класса:
#import <UIKit/UIKit.h>
@interface CustomCell : UITableViewCell
@end
В реализации, у меня есть метод setFrame, который добавляет поля слева и справа от ячейки, например так:
@implementation CustomCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
// reduce cell width to add margins
- (void)setFrame:(CGRect)frame {
frame.origin.x += 10;
frame.size.width -= 2*10;
[super setFrame:frame];
}
@end
Вышеупомянутый подход отлично работает на iOS 7.1. Я могу пролистнуть одну из строк в UITableView слева, чтобы открыть кнопку «Удалить». Этим жестом пальца не подвержены остальные строки. Когда я нажимаю на строку под ударом, кнопка удаления исчезает, и строка возвращается в нормальное положение.
В iOS 8, когда я прокручиваю одну строку влево, чтобы открыть кнопку «Удалить», кажется, что меняются виды для всех строк. Кроме того, кажется, что блок внутри метода setFrame выполняется снова и снова, когда мы прокручиваем строку влево, а не только для текущей строки. Это создает полный беспорядок представлений для всех видимых строк в таблице.
Если я не испортил начало кадра и ширину в моем классе, все работает нормально, но тогда у меня нет полей.
Кто-нибудь испытал это поведение в iOS 8? Есть ли лучший способ добавить поля?