В моем потоке UIViewController
у меня есть набор из четырех «блоков». Каждый «блок» - это UIView
четыре ребенка: два UILabel
, один UIImageView
и один UIView
. Все они создаются в построителе интерфейса и подключаются к классу с использованием IBOutlet
.См. UIView по его названию в переменной
В моем классе, у меня есть соответствующие элементы:
IBOutlet UIView *block1;
IBOutlet UILabel *title1;
IBOutlet UILabel *text1;
IBOutlet UIImageView *image1;
IBOutlet UIView *separator1;
IBOutlet UIView *block2;
IBOutlet UILabel *title2;
IBOutlet UILabel *text2;
IBOutlet UIImageView *image2;
IBOutlet UIView *separator2;
IBOutlet UIView *block3;
IBOutlet UILabel *title3;
IBOutlet UILabel *text3;
IBOutlet UIImageView *image3;
IBOutlet UIView *separator3;
IBOutlet UIView *block4;
IBOutlet UILabel *title4;
IBOutlet UILabel *text4;
IBOutlet UIImageView *image4;
IBOutlet UIView *separator4;
Я получаю данные для установки в эти UIViews динамически - и всегда в наборе из четырех, так что инициализация каждого блока тоже самое. В идеале я хотел бы сделать что-то вроде этого:
Block *block;
UIImage *img;
for(int i=1; i<=4; i++)
{
block = [response blockNumbered:i];
[<"title"+i> setText:[block getTitle]];
[<"text"+i> setText:[block getText]];
img = [block getImage];
if(img)
{
[<"image"+i> setImage:img];
}
[<"separator"+i> setHidden:![block needSeparator]];
}
(Обратите внимание, что это упрощает код, в реальной жизни, есть намного больше к этому инициализации, ближе к 200 строкам коды для каждого из четырех блоков - но точно такая же логика.) Теперь, если бы я мог как-то ссылаться на представление, имеющее имя в строковой переменной! ..
Есть ли способ достичь этого?
P.S. Я знаю, что я могу создать все эти представления в коде как массив соответствующих представлений, но тогда мне тоже нужно будет сделать макет кода, и я предпочел бы сделать это в IB. Или есть способ объявить массив UIViews
как IBOutlet
и соединить каждый элемент в массиве в IB?
А-ха! Похоже, именно то, что мне нужно. Позвольте мне попробовать и вернуться к вам. –