Как мога да напиша какаови обвързвания като код вместо в Interface Builder?

В моя модел имам NSMutableArray, който следи променящия се брой елементи. Според мен имам NSTextField, което показва броя на елементите.
Изгледът се разархивира от nib файла и разпределя/инициира модела. Следователно той знае за модела и съдържащия се масив.

Установих връзката по следния начин. В Interface Builder в текстовото поле добавих „път“ на Cocoa Binding като този: myModell.myArray.@count. По този начин мога да получа достъп до свойството count (което е задължително, тъй като самият масив не се променя).
Свързването се основава на съответствието на ключ-стойност, което установих в модела, така че масивът може да бъде достъпен. Но съответствието на ключ-стойност не е част от въпросите.

Моят въпрос: Как мога да поставя обвързването в изходния код и да не го пиша в Interface Builder?




Отговори (1)


С протокол NSKeyValueBindingCreation. Изпращате нещо като [someObject bind:@"value" toObject:myModel withKeyPath:@"myArray.@count" options:nil].

person Chuck    schedule 02.06.2010
comment
Вече опитах това. Към какво бихте отнесли someObject и стойност, ако искам да актуализирам myTextField? Тествах следното: [self bind:@myTextField ...] [self bind:@myTextField.@value ...] [myTextField bind:@value ...] Нищо от горното обаче не работи. - person JJD; 03.06.2010
comment
Неееее, очевидно зависи от това къде ще поставите кода, но ако приемем, че отива някъде с валидна препратка към myTextField и myModel, аргументът за обвързване: е името на обвързването. Както каза Чък.. [myTextField bind:@value toObject:myModel withKeyPath:@myArray.@count options:nil] - person hooleyhoop; 03.06.2010
comment
да Сега го разбрах. [self.myTextField bind:@stringValue toObject:self.myModell withKeyPath:@myArray.@count options:nil]; Важно е да се отбележи, че текстовото поле в IB също трябва да има някаква връзка с членската променлива myTextField. (objectValue вместо stringValue също работи) - Благодаря, момчета! - person JJD; 03.06.2010