ios - Swift:根据条件显示不同的视图
问题描述
我正在构建一个为用户显示不断变化的任务的应用程序(计划是每天显示一个任务,目前它只是在加载时显示一个随机任务)。
流程:用户登录应用程序并被定向到显示日常任务的主屏幕。完成任务后,他单击“标记已完成”按钮,然后以模态方式显示成功屏幕。当用户关闭成功屏幕时,他返回到主屏幕,当前仍显示每日任务。
我想更改主屏幕上的视图,以便从成功屏幕返回时,用户将看到不同的视图,而不是显示之前显示的任务(即一条消息说“您完成了日常任务”) .
新任务只应在第二天(或任何其他条件)显示。
逻辑是:
如果 dailyActivityCompleted = false > 显示每日活动视图
如果 dailyActivityCompleted = true > 显示“已完成”视图
有条件地确定在同一个 UIViewController 中显示哪些内容的最佳方法是什么?
我是 Swift 的新手,如果这是一个基本问题,我很抱歉,我搜索但找不到解决方法......
谢谢!
解决方案
有条件地确定在同一个 UIViewController 中显示哪些内容的最佳方法是什么?
最好的方法是维护一个管理应用程序状态的数据模型,包括任务列表、当前任务、完成状态等。一旦有了这些,视图控制器的工作就是确保其视图反映模型,或者至少是它显示的模型的一部分。每当发生可能改变模型状态的事情时,您都可以让视图控制器检查模型并自行更新。例如,如果您使用 segue 来显示成功视图控制器,您可以实现unwindFromSegue(segue:)
调用一些方法来检查模型并更新视图。
推荐阅读
- java - Hadoop 3.1.2 无法从 /webhdfs/v1/?op=LISTSTATUS 检索数据:服务器错误
- firebase - Firestore 安全规则 - 检查字段是否为有效的电子邮件地址
- kubernetes - 为什么从 helm 安装 grafana 到 kubernetes-sigs/kind 时服务没有任何活动端点?
- c# - 当我单击 UserControl 内部的按钮时,如何更改 MainWindow 中的内容?
- amazon-web-services - 无法为 lambda Visual Studio 代码复制“本地运行”
- azure - 如何将 Microsoft.Office.Interop.Word 文档转换为字节数组?
- vue.js - Vue 使用路由链接到单页组件
- r - dcast:使用复制将长转换为宽
- javascript - 如何将随机类添加到在 jquery 中动态创建的 div?
- angular - 在一种方法中使用两个参数