首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速分段控制开关多视图

快速分段控制开关多视图
EN

Stack Overflow用户
提问于 2015-01-15 03:26:55
回答 7查看 102.1K关注 0票数 58

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

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

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

代码语言:javascript
复制
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.
    }


}

另一件事,如果我把两个视图放在我的控制器内,什么是区分它的最佳实践呢?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-01-15 03:35:07

可以使用UIViewUIView属性显示/隐藏所需的视图。首先,必须通过接口构建器将两个视图链接到IBOutlets

代码语言:javascript
复制
@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;
    }
}

注意:它在Swift 1和2中被命名为hidden

票数 47
EN

Stack Overflow用户

发布于 2015-01-16 00:07:23

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

票数 54
EN

Stack Overflow用户

发布于 2015-01-15 03:36:57

首先,创建两个插座,并将软管连接到ViewController中的视图。

代码语言:javascript
复制
@IBOutlet weak var firstView: UIView!
@IBOutlet weak var secondView: UIView!

并将代码更改如下:

代码语言:javascript
复制
@IBAction func indexChanged(sender: UISegmentedControl)
{
    switch segmentedControl.selectedSegmentIndex
    {
    case 0:
        firstView.hidden = false
        secondView.hidden = true
    case 1:
        firstView.hidden = true
        secondView.hidden = false
    default:
        break; 
    }
}

如果您不想创建出口,则分配视图单独的标记(例如101102),您可以这样做:

代码语言:javascript
复制
@IBAction func indexChanged(sender: UISegmentedControl)
{
    switch segmentedControl.selectedSegmentIndex
    {
    case 0:
        self.view.viewWithTag(101)?.hidden = false
        self.view.viewWithTag(102)?.hidden = true
    case 1:
        self.view.viewWithTag(101)?.hidden = true
        self.view.viewWithTag(102)?.hidden = false
    default:
        break; 
    }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27956353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档