![Screenshot](https://i.stack.imgur.com/VFRpS.jpg)
Допустим, у меня есть 2 сущности в файле модели базовых данных, одна из которых является всеми "транзакциями", когда-либо совершенными компанией X. Объект «транзакции» имеет среди прочих свойств свойство «ДАТА» и отношение «КОМПАНИЯ» «один к одному» (указывающее компанию, с которой компания Х совершила эту конкретную транзакцию). Другая сущность: «компании», конечно, содержит всю информацию о компаниях, с которыми компания Х заключила сделку. У сущности "компании" есть множество "TRANSACTIONS", которое является обратной зависимостью от отношения "COMPANY" сущности "транзакции".
Таким образом, в IB я создал NSTableView
(с его собственным NSArrayController
), показывающий все транзакции на определенную дату (с помощью NSPredicate
).
Затем я создаю другое табличное представление, показывающее отношение «многие» «СДЕЛКИ» компании выбранной транзакции в первом табличном представлении (которое показывает транзакции на определенную дату). Привязка NSArrayController
во втором табличном представлении выглядит так:
** привязка к: «имя контроллера первого табличного представления», ключ контроллера: выбор, ключ модели Путь: COMPANY.TRANSACTIONS (отношение «ко-многим» в сущности «компании») **
До настоящего момента все работало нормально, во втором табличном представлении показаны все транзакции, которые компания X совершила с компанией из выбранных транзакций в первом табличном представлении.
Но у меня есть группа текстовых полей, показывающих детали определенных транзакций. Связать эти текстовые поля с контроллером 1-го табличного представления (в котором отображаются транзакции на определенную дату) довольно просто.
Но я хочу сделать следующее:
1 / Просмотрите транзакции на определенную дату в первом табличном представлении, выберите любую из них
2 / Затем проверьте все предыдущие транзакции компании этой транзакции (выбранной в первом табличном представлении) из второго табличного представления.
3 / Выберите любые предыдущие транзакции и проверьте детали транзакции из этой группы текстовых полей
Поэтому, естественно, мне нужно было привязать gp текстовых полей к контроллеру 2-го табличного представления. Но я обнаружил, что выбранная по умолчанию строка во 2-м табличном представлении (в котором показаны все предыдущие транзакции компании) не была транзакцией, которую я выбрал в 1-м табличном представлении на определенную дату. Конечно, я могу вручную выбрать эту транзакцию во втором представлении таблицы ....
Так что я просто хочу знать, возможно ли, чтобы второе представление таблицы автоматически выбирало транзакцию в соответствии с транзакцией, которую я выбрал в первом представлении таблицы для привязки ??
После нескольких часов поиска в Google я решил проблему, реализовав протокол делегата tableview:
- (void)tableViewSelectionDidChange:(NSNotification *)aNotification {
if (["nameOf1stTableView" selectedRow] > -1) {
NSArray *objsArray = ["nameOf2ndTableView'sController" arrangedObjects];
for (id obj in objsArray) {
if ([[obj valueForKey:@"DATE"] isEqualToDate: ["nameOf1stTableView'sController".selection valueForKey:@"DATE"]]) {
["nameOf2ndTableView" selectRowIndexes:[NSIndexSet indexSetWithIndex:[objsArray indexOfObject:obj]] byExtendingSelection:NO];
}
}
}
}
Но это выглядит слишком громоздко ... это можно сделать только с помощью привязки?