Одно из двух связанных табличных представлений не обновлено для изменений в другой таблице - PullRequest
0 голосов
/ 11 апреля 2011

У меня есть приложение OS X, которое использует splitview с двумя встроенными NSTableViews.Изменение значения в одном табличном представлении должно изменить связанное значение во втором, но этого не происходит.

В нем используется CoreData с использованием привязки данных, а не клейкий код.Существует NSArrayController для каждого из TableViews.В первом окне отображаются ожидаемые данные в первом (слева TableView), а именно:

American Travel <-- selected
Browse All
Fiction
Science Fiction

Во втором (справа TableView) отображаются соответствующие данные для книг American Travel, а именно список книг Travel This.потому что второй набор контента контроллеров имеет значение:

leftController.selection.books

Это означает, что у меня есть TableColumns, привязанная к нужным данным.Я не вижу предупреждений, связанных с этой проблемой сбоя при обновлении второго TableView после нового выбора в первом TableView.Я полагаю, что Observer устанавливается автоматически системой, которая наблюдает за изменением выделения в левом ArrayController.

В инспекторе атрибутов для обоих проверенных ArrayController:

Avoid Empty Selection
Preserve Selection
Select Inserted Objects
Auto Rearrange Content

Привязка значения для одногоTableColumn of RightController - bookList

Bind to : RightController
Controller Key : arranged Objects
ModelKey Path : name

Мой вопрос:

У меня проблема в том, что данные в right / second / book_names не меняются, когда я меняю выбор в левой /first / book-types
TableView.Где я могу решить эту проблему?Я знаю, что это что-то очень маленькое, например, флажок.Я просто не могу его найти!

/// Begin Category.h
@class Book;

@interface Category : NSManagedObject {
}
@property (nonatomic, retain) NSSet * books;
@property (nonatomic, retain) NSString * name;// name of book_category

......

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ ДОБАВЛЕНА 4/13/2011

I have added a button which is connected an action in the

LeftArrayController(Category) namely, selectNext: . When I click 

the button, the selection in the CATEGORY TableView does not

visibly change, but the TableView on the right (Books) does change, 

as the list of books on the Right continually changes. 

If I click the TableView with the mouse, no selection change is done 

either in effect on the RightTableView or in the visible

sense on the Left TableView. Why is the mouseClick not effecting a 

visible change int the TableViewColumn? That is, why is the mouse 

unable to change selection, whereas the button is able to. 

There is only one column in the TableView. In Attributes Inspector I have

tried all combination of Empty,Column and Type Select for this single selection

Table. Is there no way around using NSTableView Delegate methods to set selection?

1 Ответ

0 голосов
/ 15 апреля 2011

Это был случай ошибки пользователя. У меня были ошибки в моей модели данных. У сущностей были отношения в качестве резервных для свойств класса NSSet *. Одно из этих отношений было установлено как 1 к 1 и должен быть от 1 до многих. Две таблицы сейчас работают! Большое спасибо тем, кто прочитал это. Я знал, что совершил какую-то глупую ошибку, когда я не получил никаких комментариев. Я надеюсь, что это поможет кому-то в будущем.

Mark

...