iPhone: добавить фоновую кнопку для просмотра, когда в UITableView нет ячеек - PullRequest
0 голосов
/ 06 июня 2010

У меня есть UITableViewController, когда нет данных для заполнения UITableView, я хочу добавить кнопку, которая использует изображение. Таким образом, вместо того, чтобы пользователь увидел табличное представление без записей, он увидит изображение с надписью: «Записи не добавлены, нажмите, чтобы добавить одну», затем они щелкают и мы создаем новую.

Я предполагал, что просто скрою UITableView, затем создаю кнопку, но я никогда не вижу кнопку. Здесь я использую:

if ([[fetchedResultsController sections] count] == 0) {
        self.tableView.hidden = YES;
        // Create button w/ image
        UIButton * btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        btn.frame = CGRectMake(0, 0, 100, 50);
        [btn setImage:[UIImage imageNamed:@"no-rides.png"] forState:UIControlStateNormal];
        [self.view addSubview:btn];
    }

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

Ответы [ 4 ]

1 голос
/ 06 июня 2010

Я не уверен, что это работает, но вы можете попробовать это:

  1. Если ваш контроллер представления не является UITableViewController, и он содержит UITableView [self.tableView removeFromSuperview]; затем [self.view addSubview];

  2. Если ваш контроллер представления является UITableViewController, вам может потребоваться установить в первой строке изображение и текст. Затем вы можете обработать событие: tableView:didSelectRowAtIndexPath:, и если пользователь щелкнет первую ячейку, вы активируете метод обработки события кнопки

1 голос
/ 06 июня 2010

В UITableViewController self.view может быть self.tableView, в этом случае скрытие таблицы также скрывает кнопку. Попробуйте использовать пользовательский UIViewController и вместо этого создать таблицу или кнопку в качестве подпредставления self.view.

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

0 голосов
/ 01 апреля 2016

Для всех будущих путешественников, я просто установил .userInteraction = true (Swift), и это сработало как шарм. Всего:

tableView.backgroundView = constructMyViewWithButtons()
tableView.backgroundView!.userInteraction = true
0 голосов
/ 06 июня 2010

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

По умолчанию свойство tableFooterView UITableView равно nil.Так что просто создайте свою кнопку, а затем выполните:

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