Я хочу создать повторно используемый компонент (настраиваемый элемент управления) для iPhone. Он состоит из нескольких стандартных элементов управления, предварительно установленных на представлении, а затем некоторого связанного кода. Мои цели:
- Я хочу иметь возможность использовать Interface Builder для создания подпрограмм в моем настраиваемом элементе управления;
- Я хочу как-то скомпоновать все это, чтобы затем я мог довольно легко перетащить полученный пользовательский компонент в другие виды, без необходимости вручную переустанавливать кучу торговых точек и так далее. (Небольшая ручная перемотка в порядке, я просто не хочу делать тонны и тонны ее.)
Позвольте мне быть более конкретным и рассказать вам конкретно, что должен сделать мой контроль. В моем приложении иногда мне нужно нажать веб-службу, чтобы проверить данные, которые пользователь ввел. Ожидая ответа от веб-службы, я хочу отобразить счетчик (индикатор активности). Если веб-службы отвечают с кодом успеха, я хочу отобразить галочку "Успех". Если веб-служба отвечает кодом ошибки, я хочу отобразить значок ошибки и сообщение об ошибке.
Одноразовый способ сделать это довольно просто: я просто создаю UIView, который содержит UIActivityIndicatorView, два UIImages (один для значка успеха и один для значка ошибки) и UILabel для сообщения об ошибке. Здесь снимок экрана с соответствующими красными деталями:
Затем я подключаю фрагменты к выходам, и я помещаю код в свой контроллер.
Но как мне упаковать эти фрагменты - код и небольшую коллекцию представлений - чтобы я мог их повторно использовать? Вот несколько вещей, которые я нашел, чтобы получить меня отчасти там, но не так уж и хороши:
- Я могу перетащить коллекцию представлений и элементов управления в раздел "Пользовательские объекты" библиотеки; то, позже, я могу перетащить их обратно на другие виды. Но (а) он забывает, какие изображения были связаны с двумя UIImages, (б) есть много ручной переустановки из четырех или пяти выходов, и (c) что самое главное, это не приводит к появлению кода. (Возможно, есть простой способ подключить код?)
- Думаю, я могу создать IBPlugin; не уверен, что это поможет, и это похоже на большую работу, а также не совсем понятно, работает ли IBPlugins для разработки iPhone.
- Я подумал: "Хм, есть код, связанный с этим, - который пахнет контроллером", поэтому я попытался создать пользовательский контроллер (например,
WebServiceValidatorController
) с соответствующим XIB файлом. Это действительно кажется многообещающим, но потом я не могу понять, как в Interface Builder перетащить этот компонент на другие виды.WebServiceValidatorController
- это контроллер, а не вид, поэтому я могу перетащить его в окно документа, но не в виде.
У меня такое чувство, что я пропускаю что-то очевидное...