Swift – 分段控制 – 切换多个视图
到目前为止,我仍然无法确定如何在一个视图控制器中切换多个视图。 我的故事板是这样的。
现在我想在视图控制器中embedded两个视图。
我的代码分段控制到目前为止在一个视图控制器中切换两个视图。
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. } }
另一件事,如果我把两个视图放在我的控制器里,区分它的最佳实践是什么?
请指教。 谢谢。
您可以使用UIView
的isHidden
属性来显示/隐藏所需的视图。 首先,您必须通过“接口”构build器将两个视图链接到IBOutlets
@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; } }
注意:它被hidden
在Swift 1和2中。
如果你想在Xcode中为两个重叠的子视图做UI布局,更好的解决scheme是使用两个UIContainerViewController,并使用上面的答案中build议的隐藏属性设置相同的方法。
首先创build两个sockets,并将软pipe连接到ViewController
的视图。
@IBOutlet weak var firstView: UIView! @IBOutlet weak var secondView: UIView!
并更改代码,如:
@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; } }
如果你不想创build奥特莱斯,分配意见个人标签(说101
和102
),你可以这样做:
@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; } }
将两个视图都添加到故事板中的视图控制器,并将其中的一个设置为hidden = yes或alpha = 0。当您的索引更改函数被调用时,将屏幕上的当前视图设置为hidden = yes / alpha of 0并设置以前隐藏视图隐藏=否/阿尔法= 1.这应该达到你想要的。
@IBAction func acSegmentAction(_ sender:Any){
switch acSegmentedControl.selectedSegmentIndex { case 0: // print("addressview selected") addressView.isHidden = false contactProviderView.isHidden = true case 1: //print("contact provider selected") addressView.isHidden = true contactProviderView.isHidden = false default: break; } }
XCODE 8.3.2更新
这里是xcode 8.3.2的更新语法
容器视图function作为小视图控制器。