【问题标题】:Disallow segmented control segment from changing禁止分段控制段改变
【发布时间】:2016-06-24 14:17:59
【问题描述】:

我有一个奇怪的问题,关于我们正在应用中的临时修复。出于可怕的原因,我们有一个包含三个段的分段控件,但我们在三个 tableView 数据源中拥有每个分段控件的三个实例(不要问,我们希望这不是最终解决方案......)

无论如何,由于这种糟糕的设置,当我们选择一个新段时,分段控件的实例 A 会选择它的新索引。然后我们换出数据源并在桌子上调用reloadData。现在我们选择了分段控件的实例 B,其索引与选定的实例 A 相同。然后,当我们选择原始段时,实例 B 将其索引设置为新索引,我们现在重新加载数据,这会导致显示实例 A。然而,实例 A 仍然选择了旧索引,因此它的选择显示了错误的索引。

我目前正在通过手动重置委托回调中的选定索引来解决这个问题。但是,理想的情况是告诉分段控件我不希望它改变它的选择,但我仍然希望用户能够与之交互。这有可能吗?我意识到这是一个糟糕的解决方案,再次,我们希望将来改变它,所以现在,对我有什么建议吗?

【问题讨论】:

    标签: ios objective-c swift uisegmentedcontrol


    【解决方案1】:

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

    【讨论】:

    • 我现在发生了一些非常相似的事情,在我完成所有新数据的获取之后,我将段设置回正确的段。然而,这感觉很hacky,这并不是世界上最糟糕的事情,因为将分段控件作为一个单元格首先是一个hack,但我想尝试保持这个修复的“hackiness”如果可能,最低限度。
    • 这艘“hacky”船听起来像是很久以前航行的。现在你只是想让你的混乱表现正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多