【问题标题】:Ios swift container view and segmented control switch viewsios swift容器视图和分段控制切换视图
【发布时间】:2015-04-20 15:31:20
【问题描述】:

我有分段控件和容器视图,现在如何制作 2 个视图,分段控件需要在容器视图中切换这 2 个视图?

我找不到 swift 或 obj c 的任何教程。

【问题讨论】:

标签: ios objective-c swift uisegmentedcontrol uicontainerview


【解决方案1】:

首先,进入容器视图的 View Controller 并确保您的两个视图是变量,通过 Interface Builder 或 Code。 假设您称他们为 view1view2

在你的viewDidLoad() 写(swift):

NSNotificationCenter.defaultCenter().addObserver(self, selector: "segmentedControlTapped:", name: "SCTapped", object: nil)

然后,像这样创建一个新函数:

func segmentedControlTapped(notif: NSNotification){
    let index = notif.userInfo["index"] as Int

    if index == 0{
        view1.hidden = false
        view2.hidden = true
    }
    else if index == 1{
        view1.hidden = true
        view2.hidden = false
    }
}

然后,在包含分段控件的视图控制器中,将 IBAction(如果使用 IB)连接到控件的 ValueChanged 操作或使用代码。

IBAction 函数应该如下所示:

@IBAction func tapped(sender: UISegmentedControl){
    NSNotificationCenter.defaultCenter().postNotificationName("SCTapped", object: nil, userInfo: ["index": sender.selectedSegmentIndex])
}

这应该做的是,当 SC 被点击时,它会调用 tapped 函数,该函数告诉 NSNotificationCenter 发布一条消息。这应该由 VC 接收到,其中包含视图,并且应该调用 segmentedControlTapped(),它会切换你的视图。

【讨论】:

  • 不能让adInfoViewController.hidden = false 工作does not have a member named 'hidden',在文件顶部我放了var adInfoViewController = AdInfoViewController() 没有从情节提要中做任何事情。我还需要做点别的吗?
  • 是的,您不能隐藏 UIViewController,因为它与 UIView 不同。您需要先制作要隐藏的两个 UIView。抱歉,我以为你已经拥有它们了。
  • 但是我可以用 2 个视图控制器来制作它,这样它就可以分开,以便更好地控制?也许是instantiateViewControllerWithIdentifier?如果你有代码?
  • 好吧,用 2 个视图控制器而不是 2 个 UIView,实际上要容易得多。您只需要在同一个位置有 2 个容器视图,当您点击分段控件时,您会隐藏一个并显示另一个,反之亦然。
  • 这似乎是你需要的:stackoverflow.com/questions/13279105/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
  • 1970-01-01
  • 2012-04-26
相关资源
最近更新 更多