2016-06-24 51 views
0

对于我们正在放入应用程序的临时修复,我有点奇怪的问题。出于可怕的原因,我们有三段的分段控制,但是我们在三个tableView数据源中有三个每个分段控件的实例(不要问,我们希望这不是最终的解决方案......)禁止改变分段控制段

无论如何,由于这种可怕的设置,当我们选择一个新的细分市场时,细分控制的实例A会得到它选择的新索引。然后我们换出数据源并在表格上呼叫reloadData。现在我们有分段控件的实例B,其索引与实例A相同。然后,当我们选择原始段时,实例B将其索引设置为新索引,现在我们重新加载数据,这会导致实例A被显示。然而,实例A仍然选择了旧索引,所以它的选择显示了错误的索引。

我目前正在通过手动重置点击代理回调中选定的索引来解决此问题。然而,最理想的是告诉分段控制,我不希望它改变它的选择,但我仍然希望用户能够与它进行交互。这可能吗?我意识到这是一个可怕的解决方案,我们希望在未来改变它,所以现在,对我有什么建议?

回答

1

在最后一步中,当再次显示分段控件的实例A时,应该使用selectedSegmentIndex属性编写cellForRowAtIndexPath以将段设置为所需的段。这样当实例A再次显示时,它将显示正确的索引。

+0

我现在正在做一些非常类似的事情,在完成所有获取新数据的操作后,我将该段设置回正确的段。然而,这感觉很不好,这并不是世界上最糟糕的事情,因为将分段控制作为一个单元格首先是黑客行为,但我想尝试保持此修复程序的“黑客行为”尽可能最小化。 –

+0

这听起来很像“哈克”号船航行很久以前。现在你只是想让你的表现正确无误。 –