使用分段控制器更改表视图



我想用XMSegmentController(https://cocoapods.org/?q=segmen(来改变不同的表视图,我不知道我的程序中缺少什么,这导致我运行时出现黑色情况。有谁知道要向我的程序添加什么?谢谢。

这是 mt 代码:

import UIKit
import XMSegmentedControl
class ViewController: UIViewController, XMSegmentedControlDelegate,UITableViewDelegate,UITableViewDataSource {
    @IBOutlet weak var segmentedControl1: XMSegmentedControl!
    @IBOutlet weak var tableview1: UITableView!
    @IBOutlet weak var tableview2: UITableView!
    let one = ["1","2","3"]
    let two = ["4","5","6"]
    override func viewDidLoad() {
        super.viewDidLoad()
        segmentedControl1.delegate = self
        segmentedControl1.segmentTitle = ["One", "Two"]
     }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            let cell = tableView.dequeueReusableCell(withIdentifier: "left", for: indexPath)
            cell.textLabel?.text = one[indexPath.row]
            return cell
        }else {
            let cell = tableView.dequeueReusableCell(withIdentifier: "right", for: indexPath)
            cell.textLabel?.text = two[indexPath.row]
            return cell
        }
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        if tableView == self.tableview1 {
            return one.count
        }
        return two.count
    }
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return UITableViewAutomaticDimension
    }
    func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
        return UITableViewAutomaticDimension
    }

    func xmSegmentedControl(_ xmSegmentedControl: XMSegmentedControl, selectedSegment: Int) {
        if xmSegmentedControl == segmentedControl1 {
            print("SegmentedControl1 Selected Segment: (selectedSegment)")
        }
    }
}

将控制器设置为初始视图控制器以显示控制器。现在使用委托方法selectedSegment参数,并根据它hide/show tableView

func xmSegmentedControl(_ xmSegmentedControl: XMSegmentedControl, selectedSegment: Int) {
    if xmSegmentedControl == segmentedControl1 {
        tableview1.isHidden = selectedSegment != 0
        tableview2.isHidden = selectedSegment != 1
    }
}

此外,您可以使用这样的单个tableView,而不是使用两个tableView

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if segmentedControl1.selectedSegment == 0 {
        let cell = tableView.dequeueReusableCell(withIdentifier: "left", for: indexPath)
        cell.textLabel?.text = one[indexPath.row]
        return cell
    }else {
        let cell = tableView.dequeueReusableCell(withIdentifier: "right", for: indexPath)
        cell.textLabel?.text = two[indexPath.row]
        return cell
    }
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if segmentedControl1.selectedSegment == 0 {
        return one.count
    }
    return two.count
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

在委托方法中,xmSegmentedControl只需重新加载表视图。

func xmSegmentedControl(_ xmSegmentedControl: XMSegmentedControl, selectedSegment: Int) {
    if xmSegmentedControl == segmentedControl1 {
        tableView.reloadData()
    }
}

您的初始 ViewController 是什么?您能否检查一下您的故事板?

设置初始视图控制器。

func xmSegmentedControl(_ xmSegmentedControl: XMSegmentedControl, selectedSegment: Int) {
    if xmSegmentedControl == segmentedControl1 {
        tableviewOne.isHidden = selectedSegment != 0
        tableviewSecond.isHidden = selectedSegment != 1
    }
}

相关内容

  • 没有找到相关文章

最新更新