есть своего рода подход на полпути, который я использовал в одном из своих приложений, где я хотел иметь возможность обращаться к кнопкам в сетке, используя массив в коде, и, как и вы, я хотел разработать внешний вид и чувствую в IB.
я сделал то, что вы сделали, в том смысле, что я поместил все кнопки в представление, и дошел до объявления объявлений ivar, @property и @synhesize для каждого из них. так как они были в сетке, как вы описали, то, что я сделал, назвал каждого из них в соответствии с button_1x1 button_1x2 и т. д. (т.е. button_rxc в виде строки x столбца, если вы думаете о таблице. Имена не важны, поскольку вы только когда-либо собираетесь ссылаться на них один раз в методе, который вы вызываете из viewDidLoad.
в этом методе я создал кучу NSArrays, которые держали каждую кнопку. например:
landscapeHidden = [[NSArray arrayWithObjects:
button_3x1, button_3x2,
button_4x1, button_4x2,
nil] retain];
portraitHidden = [[NSArray arrayWithObjects:
button_1x3, button_1x4,
button_2x3, button_2x4,
nil] retain];
landscapeButtons = [[NSArray arrayWithObjects:
button_1x1, button_1x2, button_1x3, button_1x4,
button_2x1, button_2x2, button_2x3, button_2x4,
nil] retain];
portraitButtons = [[NSArray arrayWithObjects:
button_1x1, button_1x2,
button_2x1, button_2x2,
button_3x1, button_3x2,
button_4x1, button_4x2,
nil] retain];
Затем я использовал эти массивы всякий раз, когда хотел программно их повторить.
_hidden массивы просто используются, чтобы указать, какие кнопки скрыть, когда дисплей меняет перспективу - вместо того, чтобы перемещать их, я подумал, что быстрее было просто спрятать несколько неподходящих и перекрасить их все.
как для конструктора интерфейса, попробуйте это:
Удерживая нажатой кнопку управления, один раз нажмите «Владелец файла» и подождите.
тогда вы получите большую панель, которую вы можете использовать для подключения соединений к объектам вида. Я предпочитаю использовать этот метод независимо от того, в каком направлении я соединяю вещи - т.е. если вы перетаскиваете из объектов напрямую, направление, в котором вы перетаскиваете, не всегда удобно. Таким образом, вы можете легко просматривать все торговые точки одновременно. намного проще с моей точки зрения.
сказав, что довольно легко проходить через массив и назначать цели или добавлять распознаватели жестов / обновлять заголовки / цвета / что угодно. Я полагаю, вы также можете хранить их в словаре (или иметь массив словарей).
Я прошел массив с массивом словарей и массивов кнопок, которые вы видите выше. при перевороте интерфейса словари не изменяются, но кнопки в массивах перемаркируются, поэтому любые методы, которые имеют их в качестве «отправителя», могут немедленно получить данные своего словаря путем индексации в массив данных с помощью
[myArray objectForIndex: ((UIButton*)sender).tag];
еще один трюк - сборка cmd-b, прежде чем пытаться что-либо делать в IB. это гарантирует, что он подберет вещи, которые вы только что отредактировали, или файлы, которые вы только что добавили. иногда мне приходилось чистить / строить, чтобы заставить изображение появляться в выпадающих списках IB. это обычно довольно хорошо, но если вы переименуете файл изображения, обычно легче удалить его из проекта и снова перетащить его, собрать (или очистить сборку), тогда все будет хорошо.