Вопрос по NSTabView
Помогите, пожалуйста, разобраться с обновлением окошек label в NSTabViewItem. Есть TabView с двумя вкладками (goodTab и badTab), в которых отображаются картинки через Image Kit, и я отображаю в окошках label количество картинок в них в виде текста, например "Good: 133". Странность в том, что если в одной вкладке количестов объектов изменилось, например при удалении картинки во view или изменении параметров отнесения картинки к одной или другой вкладке, и программный код соответсвенно меняет текст в label, то на экране новый текст отображается не сразу, а только после явного нажатия на вкладку или переключения между вкладками. Ниже фрагмент кода на Swift. Текст в label меняется программно для goodTab и badTab.
// two vars for key-value observing
var goodContext = 0
var badContext = 0
class TabViewController: NSViewController {
@IBOutlet weak var tabView: NSTabView!
@IBOutlet weak var goodTab: NSTabViewItem!
@IBOutlet weak var goodImageBrowserView: IKImageBrowserView!
@IBOutlet weak var badTab: NSTabViewItem!
@IBOutlet weak var badImageBrowserView: IKImageBrowserView!
let goodDataSource = ImageBrowserDataSource()
let badDataSource = ImageBrowserDataSource()
....
override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {
switch context {
case &goodContext:
goodTab.label = "Good: \(goodDataSource.numberOfItemsInImageBrowser(goodImageBrowserView))"
case &badContext:
badTab.label = "Bad: \(badDataSource.numberOfItemsInImageBrowser(badImageBrowserView))"
default:
super.observeValueForKeyPath(keyPath, ofObject: object, change: change, context: context)
}
// just to display new label
// TODO: revise!
tabView.selectNextTabViewItem(self)
tabView.selectPreviousTabViewItem(self)
}
....
Пока в качестве workaround использую программное преключение между вкладками туда-сюда, после комментария
// just to display new label
но это сильно медленно при больших количествах, и я уверен, что можно заставить перерисовать поле label напрямую. Я никак не могу найти, какое именно view отвечает за label в NSTabView или в NSTabViewItem, чтобы заставить перирисовать только его. Подскажите, пожалуйста.
