Ответ 1
Или более кратко:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self.tableView performSelector:@selector(flashScrollIndicators) withObject:nil afterDelay:0];
}
У меня странная проблема с TableViewController. В документе говорится, что tableViewController имеет дело с методом -flashScrollIndicators, когда таблица "негабаритных" относится к видимой области.
Мое приложение состоит из 3 навигационных контроллеров, загруженных в контроллер табуляции. Каждый контроллер навигации имеет в качестве контроллера корневого представления подкласс контроллера табличного представления. Каждая "модель" заполняется из файла plist, который загружает его содержимое в массив в -viewDIdLoad, а затем все передается в таблицу. Все загружается программно без IB.
Я обнаружил в своем приложении, что когда он загружает первое представление (навигационный контроллер с контроллером табличного представления как root), полоса прокрутки не мигает, даже если количество ячеек достаточно велико. Если я выбираю другую вкладку, которая загружает другой навигационный контроллер (с t.v.c. как root), полоса прокрутки снова не отображается. Когда я нажимаю вкладку, соответствующую загруженному первому навигационному контроллеру, мигает полоса прокрутки.
Итак, я попытался сделать его программным, но никак, код кажется простым:
[self.tableView flashScrollIndicators];
Я попытался представить его почти везде. Сначала в -viewDidLoad (как предлагается в документе), затем в viewDidAppear и в -viewWillAppear. Также попробовали использовать этот кодовый трэп, чтобы отобразить представление t.v.c. в виде таблицы.
[((UITableView*)self.view) flashScrollIndicators];
.. без результата.
Я начал искать образец Apple, и я обнаружил, что в Apple Table view пользовательский образец (тот, который отличается в разное время) не прокручивает и прокрутку. Протестировано как на сим, так и на устройстве.
Является ли ошибка?, есть ли правильный способ показать это программно? Кто-нибудь может мне помочь? С Уважением, Andrea
Или более кратко:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self.tableView performSelector:@selector(flashScrollIndicators) withObject:nil afterDelay:0];
}
У меня была точно такая же проблема. В конце концов я обошел его, поместив задержанный селектор в метод viewDidAppear:
. Странно, я могу установить его на 0 секунд, и он все равно отлично работает.
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self performSelector:@selector(flashTableScrollIndicators) withObject:nil afterDelay:0.0];
}
- (void)flashTableScrollIndicators
{
[self.tableView flashScrollIndicators];
}
Он не отображается, когда вы показываете названия разделов раздела.
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView;
Моим решением было отправить сообщение "flashScrollIndicators()" с небольшой задержкой, используя "dispatch_after":
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(0.4 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue(),
{ () -> Void in
myScrollView.flashScrollIndicators()
})