Владелец нескольких файлов XIB - PullRequest
1 голос
/ 07 сентября 2010

Я пытаюсь создать приложение с двумя представлениями и одним контроллером следующим образом: у меня есть два XIB.Каждый с тем же владельцем файла.

В качестве теста я поместил UILabel на каждую XIB.Я подключил владельца файла к UILabel в каждой XIB.Свойство outlet одинаково.

Когда я создаю экземпляр nib с помощью loadNibNamed, я также устанавливаю 'owner' для экземпляра Owner файла, например:

nib=[[NSBundle mainBundle] loadNibNamed:@"ONE" owner:OWNER options:nil];
nib=[[NSBundle mainBundle] loadNibNamed:@"TWO" owner:OWNER options:nil];

Теперь в OWNER,если я звоню

[myLabel setText:@"Hello World"];

, я вижу обновление метки только в nib TWO.

Если я создаю дополнительные UILabel, которые являются уникальными для каждого NIB, тогда я могу правильно обновить и просмотреть ихКажется, что у меня может быть только одно соединение из свойства владельца файла с каждым NIB.

Есть идеи?

Ответы [ 3 ]

0 голосов
/ 07 сентября 2010

То, что вы хотите, это IBOutletCollection.Это позволяет назначить свойство нескольким элементам пера и одновременно говорить обо всей группе.

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

Это очень старый и мало просматриваемый, но я не могу не заметить, почему это не работает. Вы передаете в тот же экземпляр владельца. Сделайте два экземпляра владельца файла, и вы можете иметь два разных значения метки. Нет никакой причины, по которой вы не могли бы назначить все свои выходы во всем проекте одному классу Object, хотя вы, вероятно, не захотите этого делать. Еще одна вещь, о которой стоит подумать, не следует ли вам использовать здесь наследование, создав суперкласс, соединив все общие выходы с этим классом, а затем подкласс с уникальными выходами. В самом деле, поскольку вам придется различать свои кончики, вызывая их по идентификатору кончика или по классу, связанному с ними, я думаю, что лучше связывать отдельные классы и использовать наследование, чтобы покрыть перекрытие между ними.

0 голосов
/ 07 сентября 2010

IBOutlet может указывать только на один объект.Вам понадобится два из каждого IBOutlet, который вы хотите использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...