2015-01-26 2 views
0

Каждый раз, когда я изменяю значение своего NSTextfield, весь tableView (просмотр на основе) перерисовывается.NSTableView слишком часто перерисовывается при использовании автоматического макета

Возможно, это связано с внутренним значениемСодержание, которое может измениться.

Я попытался это, но ничего не меняла

- (NSSize)intrinsicContentSize 
{ 
    return NSMakeSize(NSViewNoInstrinsicMetric,NSViewNoInstrinsicMetric); 
} 

Tableview Стиль размер устанавливается в ширину бумаги фиксированной высоты строки.

ограничения TexField являются

В: | -20- [MyTextField (14)]

Н: | -20- [MyTextField (50)]

Я также пытался сделать не вызвать супер в

invalidateIntrinsicContentSize 
and 
invalidateIntrinsicContentSizeForCell:(NSCell *)cell 

и попытался вручную установить setNeedsLayout на NO

- (void) setObjectValue:(id)objectValue 
{ 
    [super setObjectValue:objectValue]; 
    [self setNeedsLayout:NO]; 
    [self setNeedsUpdateConstraints:NO];  
} 

И таблицаView по-прежнему перерисовывается ...

Что мне нужно сделать, чтобы этого избежать?

ответ

0

Я использовал Quartz Debug с «обновлением флэш-экрана», чтобы увидеть, как части экрана перерисовываются, и весь tableView мигал.

После переопределения drawRect стола и текстового поля я увидел, что грязный прямоугольник и кварцевый проблесковый Rect не были одинаковыми. TableView не полностью перерисовывается.