Добавление представления, созданного в Interface Builder, в Прогматически созданное представление-можно ли это сделать?


Итак, я скачал проект с открытым исходным кодом, который я собираюсь настроить для личного использования (если только он не превратится в отличный проект, и в этом случае кто знает), но в любом случае у меня возникли некоторые трудности.

С самого начала я нахожу создание элементов пользовательского интерфейса с использованием прогматических методов довольно сложным, просто не могу найти хороший учебник (если у кого-то есть какие-либо предложения, это было бы очень ценно!)

Итак, я пришел к выводу, что, возможно, мой лучший метод-это возьмите представление, которое я хочу изменить, воссоздайте его в Interface Builder, а затем добавьте его в предыдущее представление, проблема здесь в том, что я просто не могу понять, как это сделать. Если кто - то хочет увидеть код, я могу предоставить его, но он основан на проекте RemotePad с открытым исходным кодом (легко гуглить), и я ищу замену элементов TapView-на самом деле все, что мне нужно сделать, это добавить четвертую кнопку под тремя кнопками мыши, но это просто потеряло меня.

Я полагаю, что действительно то, что я вопрос в том, как мне лучше всего добавить эту четвертую кнопку? В идеале кнопка должна быть "skinable", то есть должна быть в виде изображения, которое может иметь режим подсветки.

1 2

1 ответ:

На самом деле это должно быть довольно легко сделать.

  1. Во-первых, вам нужно настроить существующий контроллер вида (тот, который связан с видом, в который вы хотите добавить свою кнопку) с IBOutlet для вашей новой кнопки. Поэтому вы добавляете что-то вроде:
    @property (nonatomic, retain) IBOutlet UIButton *myFourthButton;
    
  2. Затем создайте файл nib с помощью Interface Builder. Начните с пустого файла IB и добавьте в него свою кнопку. Вы также должны установить владельца файла, чтобы он был экземпляром класса контроллера вида. Затем подключите файл Выход myFourthButton владельца к вашей новой кнопке. Сохраните файл IB.

  3. Теперь вам нужно каким-то образом загрузить этот файл NIB при создании контроллера вида. Я бы предложил сделать это в методе viewDidLoad: контроллера вида, вызвав:

    [[NSBundle mainBundle] loadNibNamed:@"yourNibFile" owner:self options:nil];
    
  4. Кнопка из файла 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, как и ожидалось.