2015-01-15 16 views
30

Cho đến bây giờ tôi vẫn không thể tìm cách chuyển đổi nhiều chế độ xem trong một trình điều khiển chế độ xem. Bảng phân cảnh của tôi giống như thế này.Swift - Kiểm soát phân đoạn - Chuyển đổi nhiều chế độ xem

enter image description here

Hiện tại tôi muốn nhúng hai chế độ xem trong bộ điều khiển chế độ xem của tôi.

enter image description here

Mã của tôi để kiểm soát phân đoạn để chuyển đổi hai quan điểm trong một bộ điều khiển xem cho đến nay.

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. 
    } 


} 

Một điều nữa, nếu tôi đặt hai chế độ xem trong bộ điều khiển, cách tốt nhất để phân biệt nó là gì?

Vui lòng tư vấn. Cảm ơn bạn.

Trả lời

30

Bạn có thể sử dụng thuộc tính isHidden của UIView để hiển thị/ẩn chế độ xem được yêu cầu của mình. Trước tiên, bạn phải liên kết cả hai quan điểm để IBOutlets thông qua trình tạo giao diện

@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; 
    } 
} 

Lưu ý: nó được đặt tên là hidden trong Swift 1 và 2.

+0

Xin chào, Bạn thể chất như thế nào trong bảng phân cảnh? làm thế nào để bạn đặt historyView ON PopularView? –

+1

cần thêm dấu ngắt vào mọi trường hợp kết thúc –

1

Thêm cả hai chế độ xem vào bộ điều khiển chế độ xem trong bảng câu chuyện và đặt một trong số chúng thành ẩn = yes hoặc alpha = 0. Khi chỉ mục của bạn thay đổi chức năng được gọi là đặt chế độ xem hiện tại trên màn hình thành ẩn = yes/alpha 0 và đặt chế độ xem ẩn trước đó thành ẩn = no/alpha = 1. Điều này sẽ đạt được những gì bạn muốn.

6

Trước hết tạo ra hai cửa hàng và kết nối ống với quan điểm trong ViewController của bạn.

@IBOutlet weak var firstView: UIView! 
@IBOutlet weak var secondView: UIView! 

Và Thay đổi mã như:

@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; 
    } 
} 

Nếu bạn không muốn tạo Outlets, chuyển nhượng các quan điểm thẻ cá nhân (Say 101102) và bạn có thể làm điều đó thích:

@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; 
    } 
} 
40

Nếu bạn muốn bố trí giao diện người dùng trong Xcode cho hai bản xem trước chồng chéo, giải pháp tốt hơn là sử dụng hai UIContainerViewController và sử dụng cùng một cách đặt ting thuộc tính ẩn như được đề xuất trong câu trả lời ở trên.

enter image description here

+3

hiển thị cho tôi mã số –

+1

có vẻ thú vị. Bạn có thể đăng một số mã không? nhờ – Lachtan

+0

'@IBAction func segmentSelectedAction (sender: AnyObject) { switch sender.selectedSegmentIndex { trường hợp 0: firstContainer.hidden = false secodeContainer.hidden = true trường hợp 1: firstContainer.hidden = true secodeContainer.hidden = false mặc định: ngắt; } } ' – vichhai

0

@IBAction func acSegmentAction (_ sender: Bất kỳ) {

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; 
    } 

    } 
0

XCODE 8.3.2 updates

đây là cú pháp cập nhật cho xcode 8.3.2

chứa Lần chức năng như ít Xem bộ điều khiển.

Các vấn đề liên quan