【问题标题】:How to hide/display controls in ios using storyboards?如何使用情节提要在 ios 中隐藏/显示控件?
【发布时间】:2017-10-08 11:15:44
【问题描述】:

我在 Xamarin ios 项目中使用情节提要和自动布局,我发现我希望 UI 根据用户交互进行更改。例如。选项按钮应显示登录表单或注册表单。所有其他视图/控件都应相同,但由于注册表单具有更多字段,占用的空间可能会有所不同。

以上只是一个例子,我发现我需要这是几个视图,并假设我应该使用一个控件或模式。

【问题讨论】:

  • 您想在故事板上而不是在代码中操作控件?
  • 请提供有关您的布局和预期结果的更多详细信息。您想在两种形式之间切换还是将一种形式转换为另一种形式?现在你的意图还不清楚。
  • 好的,上面的例子是在一个不太具体的场景中尝试使问题更普遍,但我会改为尝试我的实际问题。我有 2 个垂直堆叠的“容器”(视图)的视图。第二个有一个不同选项的按钮列表。第一个容器显示今天的日期和一个输入表单的按钮如果尚未输入,否则应该显示今天的值而不是按钮。正如@Duncan 下面建议的那样,我可以使用两种不同的视图,但这意味着复制第二个容器按钮和逻辑。

标签: ios xamarin autolayout storyboard


【解决方案1】:

我对 Xamarin 知之甚少,所以我必须回答原生 iOS 开发方面的问题,并假设有一个等价物。

听起来您希望同一个按钮根据当前状态将用户带到不同的故事板场景。

这很容易。不要将转场直接链接到您的按钮,而是创建从源场景到每个目标场景的转场,并为它们提供唯一标识符。然后将按钮与IBAction 方法挂钩。在该方法中,检查相关状态,并使用 performSegue(withIdentifier:sender:) 调用适当的 segue:

@IBAction func handleButton(_ sender: Any) {
   if userIsRegistered {
      performSegue(withIdentifier: "registerSegue", sender: sender) 
   } else {
      performSegue(withIdentifier: "loginSegue", sender: sender) 
   }
}

这是 Swift 代码 - 您必须自己找出等效的 C#,但它至少应该让您知道。

【讨论】:

  • 实际上,这是我试图避免的。在上面的例子中,我同意拥有多个视图并在它们之间导航是一个公平的解决方案,除非视图包含更多需要在两个屏幕上实现的信息。我想一种方法是将部分视图实现为 xib 并动态加载它们?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 2012-08-04
  • 2012-05-18
  • 1970-01-01
  • 2020-12-15
相关资源
最近更新 更多