0

Id, чтобы использовать список NSPopupbutton, чтобы показать список. каждый элемент в списке объединяет два атрибутов от NSManagedObject.NSPopupbutton, объединяющий два значения для Контента. Возможно, похоже на DisplayPattern

"firstname, userid" 

Я бы предпочел не добавлять переходный атрибут, поскольку это искажает бизнес-логику.

Есть простой способ объединения двух значений содержания значений в NSPopupbutton

Это выглядит как NSLabel имеет DisplayPattern. Тем не менее, это также, по-видимому, разрешает только привязку к одному атрибуту, хотя может содержать форматирование строк.

OSX не iOS.

+0

Почему бы не использовать свойство и не связать его с NSpopup. И это свойство будет использовать nsstring appendWithFormat из вашего управляемого объекта? Вы также можете использовать valueTransformer class –

+0

. Я надеялся избежать введения бизнес-логики или состояния, учитывая, что его внешний вид интерфейса. 'nsvaluetransformer' выглядит возможным. это объект, который может быть помещен в наконечник и связан через IB. –

+0

показывает, что nspopup (и nslabel) имеет параметр трансформатора значения. вы знакомы с лучшим примером кода. –

ответ

0

Как только общий способ сделать это, сохраняя код вида отдельно от кода модели, это использовать категории Objective-C. Если управляемые подкласс объектов были названы MyManagedObject, вы могли бы сделать что-то вроде этого:

@interface MyManagedObject (ViewSupport) 

@property (nonatomic, readonly) NSString* stringForPopUpButton; 

@end 


@implementation MyManagedObject (ViewSupport) 

+ (NSSet *)keyPathsForValuesAffectingStringForPopUpButton 
{ 
    return [NSSet setWithObjects:@"firstname", @"userid", nil]; 
} 

- (NSString *)stringForPopUpButton 
{ 
    return [NSString stringWithFormat: @"%@, %@", self.firstname, self.userid]; 
} 

@end 

Этот код может появиться в отдельном файле, или любой другой. Этот шаблон хорошо работает для простых вещей, таких как объединение двух свойств. Для более сложных преобразований логика обычно будет находиться в подклассе NSViewController. Модель обычно помещается в эти объекты с использованием свойства -representedObject, а затем сопутствующие представления могут быть построены в Xcode/InterfaceBuilder и т. Д. Этот шаблон сохраняет логику обработки данных в сочетании с видом/nib/xib, который ее использует.

+0

Я сделал что-то подобное в прошлом. Наличие свойства в категории. Категории являются удивительными (tm). Но пропустили процедуру keyPathsForValuesAffectingXXX. Это как-то связано с КВО. cheers –

+0

Да, это для KVO. См. Здесь: https://developer.apple.com/library/mac/#documentation/cocoa/conceptual/KeyValueObserving/Articles/KVODependentKeys.html – ipmcc

+0

Hayzeus. Это то, что они ищут. Точно так же, как временные свойства часто обновляются - они должны полагаться на другие реквизиты. Например, «полное имя» в этом документе может быть переходным свойством в управляемом объекте .... –

 Смежные вопросы

  • Нет связанных вопросов^_^