Как я могу создать общий элемент управления в Objective-C, который можно использовать в нескольких представлениях в раскадровке? - PullRequest
4 голосов
/ 26 октября 2011

Я только начинаю свою разработку для iOS с использованием xCode 4.2 и обнаруженных раскадровок.Они кажутся отличными для быстрого прототипирования.

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

Например, скажем, я хочу иметь собственную строку заголовка, которая является общей для каждогоПосмотреть.Я думаю, что я должен быть в состоянии определить этот элемент управления с его собственным контроллером и создать его из нескольких представлений.Я просто не знаю как, и уроки и вопросы, которые я прочитал до сих пор, не обращаются к этому.

Есть какие-нибудь советы?

1 Ответ

7 голосов
/ 10 ноября 2011

Я нашел один способ сделать это, выполнив следующие шаги:

  1. Создайте новый xib-файл и установите для имитируемой метрики значение «Свободная форма», чтобы разрешить изменение размера. (MyControl.xib)
  2. Заполните элемент управления объектами, которые мне нужны.
  3. Создайте UIViewController для представления. (MyViewController.h & MyViewController.m)
  4. Установите File's Owner для MyControl.xib в пользовательский класс MyViewController
  5. В xib, в который я хочу включить элемент управления, я поместил UIScrollView, где мне нужен элемент управления (также будет работать обычный просмотр). (Parent.xib)
  6. Создайте IBOutlet для UISCrollView, в который я помещу элемент управления в ParentController.
  7. Создайте экземпляр MyViewController в ParentController.
  8. В ParentController добавьте представление MyViewController как подпредставление UIScrollView.

В коде это означает

@implementation ParentController
    @synthesize myScrollView;
    MyViewController* myController;

    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {

        self = [super init];
        if(self) 
        {
            myController = [[MyController alloc] initWithNibName:@"MyView" bundle:nil];
            [myScrollView addSubview:myController.view];
        } 
   }

Это похоже на работу и позволяет мне разделить реализацию Control и Родителя, но я не могу не думать, что есть лучший способ.

...