【问题标题】:displaying different views based on a condition checked in view controller根据在视图控制器中检查的条件显示不同的视图
【发布时间】:2010-08-01 21:03:51
【问题描述】:

我希望我的视图控制器根据依赖于某些运行时检查的条件显示不同的视图(比如说偶数小时的 uiwebview 和奇数小时的表单)。 在 iphone 项目中实现它的最佳模式是什么?也许我可以根据上述条件隐藏控件,或者加载不同的视图更好? 或者我应该加载不同的视图控制器并在我的父视图控制器中进行检查?

【问题讨论】:

    标签: iphone objective-c xcode


    【解决方案1】:

    iPhone UI 非常小而且拥挤,通常最好为不同的 UI 创建不同的视图/视图控制器对。隐藏 UI 元素会留下非常明显的间隙,并且动态手动重新排列 UI 元素是一种痛苦。

    更重要的是,不同的视图会向用户传达应用处于不同状态的信息。您不希望应用程序在不通知用户的情况下切换到不同的状态。他们很难理解正在发生的事情,而不会使他们与 UI 稍有混淆。

    如果用户无缘无故地让相同的用户操作呈现不同的 UI,这是非常糟糕的 UI 设计。例如,呈现“偶数时间的 uiwebview 和奇数时间的表单”将是一个非常糟糕的主意,因为用户不知道为什么单击特定按钮有时会获得 Web 视图和其他时间的表单视图。您是否希望用户在点击之前查看时钟,以便他们知道会发生什么?

    如果某些 UI 元素由于某种原因不可用,例如没有网络访问权限,那么最好的 UI 设计将元素显示为禁用而不是消失。界面语法告诉用户灰显的控件暂时不可用。与不断变化的 UI 相比,这更容易让人感到困惑。

    【讨论】:

    • 这是一个明智的建议。如果我决定为每个屏幕使用单独的视图控制器/视图对,我该如何管理切换逻辑?我必须使用某种导航控制器在视图之间切换吗?对不起,我是可可触摸世界的菜鸟:/
    • 导航控制器最容易使用,您不必实际展示它。要换出不同的视图,只需对您的状态进行测试,然后将当前状态的特定视图推送到导航控制器的堆栈中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-14
    相关资源
    最近更新 更多