Общий вид заголовка поверх nib-файлов с помощью Interface Builder - PullRequest
1 голос
/ 13 апреля 2010

.Hi,

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

Я думал об установке подкласса подпредставления в подкласс UIView, который автоматически загружает файл пера.

- (id)initWithFrame:(CGRect)frame {

    UIView *cell;

    NSArray *nib = [[NSBundle mainBundle] loadNibNamed: @"MainHeaderView"
                                                 owner: self
                                               options: nil];

    for (id oneObject in nib) 
        if ([oneObject isKindOfClass: [UIView class]]) 
            cell = (UIView *) oneObject;

    if ((self = [super initWithFrame: [cell frame]])) {
        // Initialization code
    }
    return self;
}

Но, похоже, это тоже не работает.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2010

Хорошо, я решил это по-другому.

Я создал headerView и контроллер, а также подкласс UIViewController для всех представлений, для которых требуется отображать заголовок, загружая их все вместе с заголовком. Примерно так:

@implementation MyDefaultViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    MyTestAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
    [self.view addSubview: [appDelegate.headerViewController view]];
}

Каждое представление, для которого нужен заголовок, будет иметь контроллер, который является подклассом MyDefaultViewController. Кажется, работает, хотя тот факт, что я не указываю, где разместить заголовок, пугает меня немного xD

0 голосов
/ 13 апреля 2010

Должно работать, хотя бы теоретически. В этом отношении, должно быть возможно (но довольно много усилий) добавить его через IB, из того, что раньше называлось палитрой; Я считаю, что этот вариант был воссоздан.

Я бы сказал, что загрузка с initWithFrame:, скорее всего, не будет работать. Другие возможные места для загрузки: awakeFromNib (с оговоркой о множественных загрузках пера, вызывающей его многократный вызов) или viewDidLoad. Попробуйте переместить нагрузку на viewDidLoad и посмотрите, подключен ли ваш cell. Вам также следует проверить, не удалось ли загрузить перо (nil возврат).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...