我已經厭倦了搜索我想要的東西,所以我會在這里問,如果可能的話,希望你們能幫忙。
我有一個表視圖,在每個單元格中都包含分段,我想用按鈕[在表視圖之外]保存所有單元格的分段,這樣我就可以在以后的另一個表中顯示它們。
這里是我的視圖控制器:
import UIKit
class ViewController。UIViewController, UITableViewDelegate, UITableViewDataSource{
@IBOutlet weak var tableView: UITableView!
let arr = [" item 1",
"item 2"。
"專案3"]
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(CustomCell.self, forCellReuseIdentifier: "cell")
}
@IBAction func saveButtonAction(_ sender: UIButton) {
//I want to save the cells segmented control selectedSegmentIndex?? {
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
90
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return arr.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as!
cell.textView.text = arr[indexPath.row] 。
returncell
}
}
這是我的自定義單元格,它包含TextView和Segment控制器,我試著把片段的變化保存在陣列中,但我不知道之后該怎么做,lol:
這是我的自定義單元格,它包含TextView和Segment控制器。
import UIKit
class CustomCell: UITableViewCell {
let textView。UITextView = {
let tv = UITextView()
tv.translatesAutoresizingMaskIntoConstraints = false
tv.font = UIFont.systemFont(ofSize: 16)
tv.isEditable = false
return tv.
}()
//var rowIndexPath: Int?
var segmentArray: [Int] = [] 。
lazy var itemSegmentedControl: UISegmentedControl = {
let sc = UISegmentedControl( items: ["1"/span>, "2"/span>, "3"/span>])
sc.translatesAutoresizingMaskIntoConstraints = false
sc.tintColor = UIColor.white
sc.selectedSegmentIndex = 0。
sc.addTarget(self, action: #selector(handlePointChange), for: .valueChanged)
return sc
}()
let stackView: UIStackView = {
let sv = UIStackView()
sv.translatesAutoresizingMaskIntoConstraints = false
return sv
}()
@objc func handlePointChange() {
let segChange = itemSegmentedControl.titleForSegment(at: itemSegmentedControl.selectedSegmentIndex)!
segmentArray.append(Int(segChange)!)
}
override func awakeFromNib() {
super.awakeFromNib()
//初始化代碼。
}
override func setSelected(_ selected。Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
stackView.addSubview(textView)
stackView.addSubview(itemSegmentedControl)
addSubview(stackView)
stackView.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = trueself.centerYAnchor).isActive = true
stackView.widthAnchor.constraint(equalToConstant: 400).isActive = true
stackView.heightAnchor.constraint(equalToConstant: 85).isActive = true
itemSegmentedControl.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true
itemSegmentedControl.topAnchor.constraint(equalTo: textView.bottomAnchor, constant: 5).isActive = true
itemSegmentedControl.widthAnchor.constraint(equalTo: textView.widthAnchor).isActive = true
itemSegmentedControl.heightAnchor.constraint(equalToConstant: 40).isActive = true。
textView.rightAnchor.constraint(equalTo: self.rightAnchor, constant: -10).isActive = true
textView.topAnchor.constraint(equalTo: stackView.topAnchor).isActive = true
textView.widthAnchor.constraint(equalTo: stackView.widthAnchor).isActive = true
textView.heightAnchor.constraint(equalToConstant: 40).isActive = true。
}
問候和感謝。
uj5u.com熱心網友回復:
首先:在ViewController中我添加了空陣列:
// I moved the segment array from the custom cell class to here
var segmentArray: [Int:Int] = [ :]
override func viewDidLoad() {
super.viewDidLoad()
// I made this array to store default state to the items segments.
segmentArray = [0:0, 1: 0,2:0]
}
//用這個函式我可以更新segmentArray。
func getSegmentNumber(r: Int, s: Int) {
segmentArray[r] = Int(s)
}
@IBAction func saveButtonAction(_ sender: UIButton) {
//這里我可以把段的新狀態保存到firebase或任何地方。
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as!
cell.textView.text = arr[indexPath.row] 。
//這里存盤索引路徑行。
cell.rowIndexPath = indexPath.row
//你需要添加鏈接,因為它將不會作業。
cell.link = self
return cell
}
第二步:在自定義單元格類中:
// I remove the store array
var segmentArray: [Int] = [] // removed
// I made link to the ViewController
var鏈接。ViewController?
//變數,以獲得索引路徑行。
var rowIndexPath: Int?
//在這里我可以使用鏈接更新段的狀態。
@objc func handlePointChange() {
let segChange = itemSegmentedControl.selectedSegmentIndex
link?.getSegmentNumber(r: rowIndexPath!, s: segChange)
}
這對我來說很有效,我希望你能得到它。 如果你需要什么,你可以問。
再次感謝Kudos。 向大家致意
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/311746.html
標籤:
上一篇:獲取一個tableView的高度
