gpt4 book ai didi

ios - 使用segmentcontroller改变tableview

转载 作者:行者123 更新时间:2023-11-28 12:21:57 27 4
gpt4 key购买 nike

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

这里是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)")

}
}
}

最佳答案

将您的 Controller 设置为初始 ViewController 以显示您的 Controller 。现在使用委托(delegate)方法中的 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 的委托(delegate)方法中,只需重新加载 tableView。

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

关于ios - 使用segmentcontroller改变tableview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44522033/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com