16

TableViewController 有一个奇怪的问题。在文档中它说 tableViewController 还处理方法 -flashScrollIndicators 当表格“超大”尊重可见区域时。

我的应用程序包含在选项卡控制器中加载的 3 个导航控制器。每个导航控制器都有一个表视图控制器的子类作为根视图控制器。每个“模型”都从一个 plist 文件中填充,该文件将其内容加载到 -viewDIdLoad 中的数组中,然后将所有内容传递给表。一切都以编程方式加载,没有 IB。

我在我的应用程序中发现,当它加载第一个视图(以表格视图控制器为根的导航控制器)时,即使单元格的数量足够大,滚动条也不会闪烁。如果我选择另一个选项卡,则不会再次显示加载另一个导航控制器(以 tvc 作为根)滚动条。当我按下与加载的第一个导航控制器相对应的选项卡时,滚动条会闪烁。

所以我试图让它以编程方式闪烁,但没有办法,代码看起来很简单:

[self.tableView flashScrollIndicators];

我试图把它几乎无处不在。首先在 -viewDidLoad 中(如文档中所建议),然后在 viewDidAppear 和 -viewWillAppear 中。还尝试使用该代码字符串将 tvc 的视图转换为表格视图。

[((UITableView*)self.view) flashScrollIndicators];

..没有结果。

我已经开始查看 Apple 示例,我发现在 Apple 的表格视图自定义示例(具有不同时间的示例)中,滚动条也不在那里闪烁。在 SIM 卡和设备上都进行了测试。

是错误吗?是否有正确的方法以编程方式显示它?有人能帮我吗?问候, 安德里亚

4

4 回答 4

41

或更简洁地说:

- (void)viewDidAppear:(BOOL)animated {
  [super viewDidAppear:animated];
  [self.tableView performSelector:@selector(flashScrollIndicators) withObject:nil afterDelay:0];
}
于 2010-12-09T13:33:11.813 回答
12

我有完全相同的问题。最后我通过在viewDidAppear:方法中放置一个延迟选择器来解决它。奇怪的是,我可以将它设置为 0 秒,它仍然可以正常工作。

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    [self performSelector:@selector(flashTableScrollIndicators) withObject:nil afterDelay:0.0];
}

- (void)flashTableScrollIndicators
{
    [self.tableView flashScrollIndicators];
}
于 2010-08-18T17:04:35.623 回答
3

显示章节索引标题时不显示。

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView; 
于 2013-05-07T14:50:08.927 回答
0

我的解决方案是使用“dispatch_after”稍微延迟发送“flashScrollIndicators()”消息:

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() 
})
于 2014-12-30T02:43:27.353 回答