Добавление пользовательского заголовка UITableViewController в Xcode 10 - PullRequest
0 голосов
/ 08 апреля 2019

Я слежу за 4-м выпуском iOS-программирования, The Big Nerd Guide.Я использую Xcode 10.0, в то время как книга использует Xcode 5.0, и я развертывал на iPad 6-го поколения под управлением iOS 11.0.Я нахожусь в главе 9, и я пытаюсь добавить пользовательский вид заголовка для UITableViewController производного класса, ItemsViewController.

Я создал пустой файл пользовательского интерфейса с именем HeaderView.xib.В этом файле я создал UIView с двумя кнопками от создателя интерфейса.Я установил тип класса «Владелец файла» на ItemsViewController.Я изменил размер HeaderView UIView на Freeform и изменил размер представления до размера кнопок.Я установил цвет фона HeaderView, чтобы очистить.Я также подключил представление «Владелец файла» к UIView в конструкторе интерфейсов.

Внутри ItemsViewController я добавил свойство IBOutlet UIView* для подключения HeaderView к ItemsViewController.Я написал - (UIView*)headerView метод экземпляра для загрузки пакета представления заголовка.

- (UIView*)headerView
{
    if (!_headerView)
    {
        [[NSBundle mainBundle] loadNibNamed:@"HeaderView" owner:self options:nil];
    }

    return _headerView;
}

И затем в viewDidLoad я устанавливаю представление заголовка.

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"UITableViewCell"];

    UIView* header = self.headerView;
    [self.tableView setTableHeaderView:header];
}

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

Почему бы HeaderView перезаписал все параметры дисплея ItemsViewController и отобразил черный экран?

1 Ответ

1 голос
/ 08 апреля 2019

Это проблема

Я также подключил представление «Владелец файла» к UIView в конструкторе интерфейсов.

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

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