我对TableViewController有一个奇怪的问题。 在doc中,它表示tableViewController也处理该方法 当表格“超大”时,-flashScrollIndicators尊重可见区域。
我的应用包含3个导航控制器,加载在标签控制器中。每个导航控制器都具有作为根视图控制器的表视图控制器的子类。 每个“模型”都从plist文件中填充,该文件将其内容加载到-viewDIdLoad中的数组中,稍后将所有内容传递给表。一切都是以编程方式加载的,没有IB。
我在我的应用程序中发现,当它加载第一个视图(一个带有表视图控制器的导航控制器作为root)时,即使单元格的数量足够大,滚动条也不会闪烁。 如果我选择另一个选项卡,则会加载另一个导航控制器(以t.v.c.为根)滚动条不再显示。当我按下与第一个导航控制器相对应的标签时,滚动条会闪烁。
所以我试图以编程方式进行闪存,但没办法,代码看起来很简单:
[self.tableView flashScrollIndicators];
我试着把它放在几乎所有地方。首先在-viewDidLoad中(如文档中所示),然后在viewDidAppear和-viewWillAppear中。 还尝试使用该代码来转换t.v.c的视图。作为表格视图。
[((UITableView*)self.view) flashScrollIndicators];
..没有结果。
我已经开始查看Apple示例了,我发现在Apple的表视图中,自定义示例(具有不同时间的示例)滚动条也不会闪烁。 在sim和设备上进行了测试。
是一个错误?,是否有正确的方式以编程方式显示它? 有人能帮我吗? 问候, 安德烈
答案 0 :(得分:41)
或者更简洁:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self.tableView performSelector:@selector(flashScrollIndicators) withObject:nil afterDelay:0];
}
答案 1 :(得分:12)
我有完全相同的问题。我最后通过在viewDidAppear:
方法中放入一个延迟选择器来解决它。奇怪的是,我可以将它设置为0秒,它仍然可以正常工作。
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self performSelector:@selector(flashTableScrollIndicators) withObject:nil afterDelay:0.0];
}
- (void)flashTableScrollIndicators
{
[self.tableView flashScrollIndicators];
}
答案 2 :(得分:3)
显示部分索引标题时不会显示。
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView;
答案 3 :(得分:0)
我的解决方案是发送" 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()
})