#objective-c #cocoa-bindings
#objective-c #cocoa-привязки
Вопрос:
У меня есть todo-приложение, в котором есть NSTabView с четырьмя элементами NSTabViewItems. У каждого представления вкладки есть представление с соответствующим контроллером представления, все в отдельных файлах nib. Я установил владельца файла каждого кончика в качестве контроллера представления, а выходы представления — в соответствующие представления.
Я исправил контроллеры представления в цепочке ответчиков после его просмотра, а также установил контроллеры представления nextResponder, чтобы цепочка ответчиков была неповрежденной. Я привязал пункты меню редактирования к действиям первого ответчика. Проблема в том, что при запуске приложения с выбранной первой вкладкой все пункты меню редактирования включены и работают нормально. Но если я переключусь на другой элемент вкладки, а затем вернусь к первому элементу вкладки, все пункты меню редактирования будут отключены, и ничто из того, что я делаю, не сможет снова включить их. Есть идеи, что происходит?
Ответ №1:
Ответ на мою проблему заключается в том, что цепочка ответчиков остается неповрежденной после запуска (View -> MyViewController -> nextResponder), и, таким образом, пункты меню работают так, как ожидалось. Но когда я меняю вкладки в NSTabView, представление вкладок исправит соответствующий NSTabViewItem.view в цепочке ответчиков, создающей View -> nextResponder, и таким образом, MyController исключается из цепочки, и команды меню больше не работают. Другими словами, NSTabView сбрасывает nextResponder из своего представления при смене вкладок, оставляя контроллер вне цепочки ответчиков.
Я просто создал для своих контроллеров подкласс NSView и настроил их так, чтобы они отображались для каждого элемента NSTabViewItem. Теперь все работает нормально.