Добавление представления, созданного в Interface Builder, в Прогматически созданное представление-можно ли это сделать?
Итак, я скачал проект с открытым исходным кодом, который я собираюсь настроить для личного использования (если только он не превратится в отличный проект, и в этом случае кто знает), но в любом случае у меня возникли некоторые трудности.
С самого начала я нахожу создание элементов пользовательского интерфейса с использованием прогматических методов довольно сложным, просто не могу найти хороший учебник (если у кого-то есть какие-либо предложения, это было бы очень ценно!)
Итак, я пришел к выводу, что, возможно, мой лучший метод-это возьмите представление, которое я хочу изменить, воссоздайте его в Interface Builder, а затем добавьте его в предыдущее представление, проблема здесь в том, что я просто не могу понять, как это сделать. Если кто - то хочет увидеть код, я могу предоставить его, но он основан на проекте RemotePad с открытым исходным кодом (легко гуглить), и я ищу замену элементов TapView-на самом деле все, что мне нужно сделать, это добавить четвертую кнопку под тремя кнопками мыши, но это просто потеряло меня.
Я полагаю, что действительно то, что я вопрос в том, как мне лучше всего добавить эту четвертую кнопку? В идеале кнопка должна быть "skinable", то есть должна быть в виде изображения, которое может иметь режим подсветки.
1 ответ:
На самом деле это должно быть довольно легко сделать.
- Во-первых, вам нужно настроить существующий контроллер вида (тот, который связан с видом, в который вы хотите добавить свою кнопку) с IBOutlet для вашей новой кнопки. Поэтому вы добавляете что-то вроде:
@property (nonatomic, retain) IBOutlet UIButton *myFourthButton;Затем создайте файл nib с помощью Interface Builder. Начните с пустого файла IB и добавьте в него свою кнопку. Вы также должны установить владельца файла, чтобы он был экземпляром класса контроллера вида. Затем подключите файл Выход myFourthButton владельца к вашей новой кнопке. Сохраните файл IB.
Теперь вам нужно каким-то образом загрузить этот файл NIB при создании контроллера вида. Я бы предложил сделать это в методе viewDidLoad: контроллера вида, вызвав:
[[NSBundle mainBundle] loadNibNamed:@"yourNibFile" owner:self options:nil];Кнопка из файла NIB теперь должна быть подключена к вашей розетке myFourthButton, теперь вам просто нужно добавить ее в представление и расположить ее. Ниже я добавляю его к главному виду контроллеров вида. Тем не менее, там может быть быть подвидом, в который его следует добавить (зависит от того, как настроен исходный вид). Опять же, я бы поставил этот код в viewDidLoad: после всего существующего кода настроить представление программно (или в другом методе, если этот код находится в другом месте).
[self.view addSubview:myFourthButton]; CGRect frame = myFourthButton.frame; frame.origin.x = 100; frame.origin.y = 100; myFourthButton.frame = frame;Когда вам нужно, чтобы ваша кнопка действительно реагировала на событие tap, вы можете подключить ее к контроллеру вида, используя IBAction и Interface Builder, как и ожидалось.