2013-03-20 2 views
0

Я работаю с SDK 10.6, с Xcode 4.2.Как связать свойство с внешним контроллером?

Я хочу привязать «свойство» к контроллеру, который существует «из моего ниба». Как я могу:

  • с интерфейсом Builder?
  • без него?

Точнее, я хочу, чтобы связать enabled свойство NSButton к arrayController, что существует «из моего пера». Единственными объектами, к которым я могу связывать свойства, в построителе интерфейса, являются заполнители или объекты. Но:

  • Я не могу заменить заполнители.
  • Если у меня был массив ControlController для моего NIB, он будет создан при загрузке моего NIB.

Почему я в этой ситуации? Потому что: arrayController находится в моем NIB; но кнопка находится в другом NIB. Этот второй NIB является подходом к моему основному виду.

Спасибо за помощь :)

ответ

0

Я думаю, что нашел ответ.

Некоторых условные обозначения:

  • MySubiewController и MySubiewController.xib являются паром OBJETS, где я хочу, чтобы выполнить некоторые привязки. Их нужно рассматривать как подсмотр.
  • Где-то еще в моей программе, «выше», у меня уже есть myMainArrayController. Это ArrayController, связанный с моими данными, и «создан в моем основном представлении».

Теперь: ответ.

  • Во-первых, например, через init метод MySubiewController, хранить myMainArrayController в некоторой переменной (вы должны выставить эту переменную в .h, как @property (лучше), прежде чем использовать его в вашей программе). Давайте дадим одно и то же имя этой переменной (вы можете указать любое имя). Например:

    - (id)initWithNibName:(NSString *)nibNameOrNil 
           bundle:(NSBundle *)nibBundleOrNil 
        withArrayController:(NSArrayController *)anArrayController 
    { 
        NSLog(@"Creation of an instance of MySubiewController"); 
    
    
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
        if (self) { 
         myMainArrayController = anArrayController ; 
        } 
    
        return self; 
    } 
    

    Здесь вы сказать вашему «подвид», который является arrayController уже существующее место.

  • Сделайте свои привязки с File's Owner, а затем self.myMainArrayController.

  • Это все !!! Он должен работать!

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