快速-分段控件-切换多个视图

问题描述 投票:49回答:6

直到现在,我仍然不知道如何在一个视图控制器中切换多个视图。我的故事板就是这样。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS8yNkU2My5wbmcifQ==” alt =“在此处输入图像描述”>

现在,我想在视图控制器中嵌入两个视图。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9WN3NJcy5wbmcifQ==” alt =“在此处输入图像描述”>

到目前为止,我的用于分段控制的代码可在一个视图控制器中切换两个视图。

import UIKit

class PopularHistoryViewController: UIViewController {

    @IBOutlet weak var segmentedControl: UISegmentedControl!

    @IBAction func indexChanged(sender: UISegmentedControl) {
        switch segmentedControl.selectedSegmentIndex
        {
        case 0:
            NSLog("Popular selected")
            //show popular view
        case 1:
            NSLog("History selected")
            //show history view
        default:
            break; 
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }


}

另一件事,如果我在控制器中放入两个视图,最好的区分方法是什么?

ios swift xcode6
6个回答
41
投票

您可以使用isHiddenisHidden属性显示/隐藏所需的视图。首先,您必须通过“界面”构建器将两个视图链接到UIView

IBOutlets

注意:它在Swift 1和2中被命名为@IBOutlet weak var historyView: UIView! @IBOutlet weak var popularView: UIView! @IBAction func indexChanged(_ sender: UISegmentedControl) { switch segmentedControl.selectedSegmentIndex { case 0: historyView.isHidden = true popularView.isHidden = false case 1: historyView.isHidden = false popularView.isHidden = true default: break; } }


49
投票

如果要在Xcode中为两个重叠的子视图进行UI布局,更好的解决方案是使用两个UIContainerViewController,并按照上述答案中的建议使用相同的方式设置hidden属性。


6
投票

首先创建两个出口并将软管连接到hidden中的视图。


1
投票

将两个视图都添加到故事板上的视图控制器,并将其中一个视图设置为隐藏= yes或alpha =0。调用索引更改功能时,将屏幕上的当前视图设置为hidden = yes / alpha为0,然后将先前隐藏的视图设置为hidden = no / alpha =1。这应该可以实现您想要的。


0
投票

@@ IBAction函数acSegmentAction(_发件人:任何){


0
投票

如果它是一个简单的视图,而不是屏幕的一部分,则确实可以使用视图控制器视图的两个子视图的isHidden属性。但是我不喜欢这种方法,因为当所有子视图合而为一时,很难理解后者的动作。我将以编程方式添加和删除这两个视图作为子视图控制器。我认为这是最干净的方法。但是,即使您决定只使用视图,也不要将它们直接放在视图控制器的视图上。使用笔尖,最好与所有者类一起使用。并且在许多情况下,请考虑以编程方式添加和约束它们。它是更多的代码,但也更干净并节省了资源。

© www.soinside.com 2019 - 2024. All rights reserved.