如何使最新的 UISegmentedControl 选项卡在单击它的应用程序会话期间持续存在?

Posted

技术标签:

【中文标题】如何使最新的 UISegmentedControl 选项卡在单击它的应用程序会话期间持续存在?【英文标题】:How to make the most recent UISegmentedControl tab persist throughout the length of just the app session it was clicked in? 【发布时间】:2013-07-07 05:33:57 【问题描述】:

所以我有一个由四个标签组成的UISegmentedControl。我需要做的是让它在整个应用会话期间被记住最近点击的标签。也就是说,当应用第一次启动时,第一个UISegmentController选项卡将被选中,然后用户点击第三个选项卡,然后用户决定转到应用程序中的不同视图,然后当用户返回使用UISegmentedControl 查看最新的(在本例中为第三个)选项卡仍处于选中状态。

我已经看到NSUserDefaults 类非常适合保存设置,但据我了解,NSUserDefaults 类以一种方式保存数据,即使应用程序被杀死然后启动它也会恢复以前保存的设置。这是我不想要的,我只希望应用程序将最近选择的选项卡保存在它被选择的应用程序会话的长度内。

我希望我说得通,如果需要更多信息/代码/解释,请告诉我。

非常感谢。

【问题讨论】:

【参考方案1】:

我不明白为什么您的视图包含分段控件会重新加载?如果您实现了正常的 MVC 方案,则默认情况下应该记住您的 UI 状态。在 userdefaults 中存储这些东西太糟糕了。我假设你有一个标签栏控制器作为根控制器,所以请检查你是否没有在 viewWillAppear 或 viewDidAppear 上重置 UI 状态。 从 iPhone 发送。

【讨论】:

是的,我刚刚修复了它,我没有在 viewWillAppear 中重置 UI 状态。 感谢您的及时回复。【参考方案2】:

好吧,这是一个相当菜鸟的问题..

我意识到我需要重置 viewWillAppear: 中的 UI 设置,因为每次要求显示视图时都会调用 viewWillAppear:,而 viewDidLoad: 仅在第一次创建视图时调用。

这是帮助我实现的图表: UIViewController Life Cycle.

【讨论】:

以上是关于如何使最新的 UISegmentedControl 选项卡在单击它的应用程序会话期间持续存在?的主要内容,如果未能解决你的问题,请参考以下文章

如何使单个 UISegmentedControl 部分检测多个触摸

如何使黑色 UISegmentedControl 显示为可见的选择突出显示?

无论实现如何,UISegmentedControl 都拒绝工作

带有 Bezeled 样式的 UISegmentedControl 使设备上的标题不居中

iOS 7 中 UINavigationbar 下方的 UISegmentedControl

更改黑色 UISegmentedControl 上的 selectedSegment 背景颜色