gpt4 book ai didi

ios - 如何多次使用相同的 UIPickerView 和不同的数据? - swift

转载 作者:行者123 更新时间:2023-11-28 06:35:37 25 4
gpt4 key购买 nike

我在可扩展的 UITableViewCell 中有一个 UIPickerView 和一个标签,在代码中我制作了 1 个部分和 3 个单元格,它们都像第一个单元格。

我确实管理了每个单元格的数据,但我的问题是当我从第一个选择器中选择一些东西然后转到第二个选择器并选择一些东西时,我的第一个选择将更改为与第二个选择器相同的行顺序。

简而言之,我怎样才能让 3 个选择器彼此分开,并将每个单元格的标签更改为来自同一单元格的选定行,而不是其他

这是我的 View 截图:

screenShot

这是我的代码:

import UIKit

let cellID = "cell"

class callViewController: UITableViewController {

var selectedIndexPath : NSIndexPath?
var tapped = false // when the first cell tapped it will be true
var flag = true

// These strings will be the data for the table view cells
let sections: [String] = ["Department:", "Team:", "Service:"]

override func awakeFromNib() {
super.awakeFromNib()

}
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self


}

//number of sections
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
// header for the secation
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return "Required Info:"
}

//number of rows in section
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}


//get the cell
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

let cell = self.tableView.dequeueReusableCellWithIdentifier(cellID, forIndexPath: indexPath) as! callCustomCell

cell.titleLabel.text=self.sections[indexPath.row]

// now reload the appropriate pickerData

if indexPath.row == 0{
cell.inputArrry=cell.departments

cell.picker.reloadAllComponents()
}

else if indexPath.row == 1{
cell.inputArrry=cell.teams

cell.picker.reloadAllComponents()
}


else if indexPath.row == 2{
cell.inputArrry=cell.services

cell.picker.reloadAllComponents()
}


if indexPath.row != 0{

cell.userInteractionEnabled = tapped

if (!tapped){
cell.backgroundColor=UIColor.clearColor()

}
else {
cell.backgroundColor=UIColor.whiteColor()
}

}

if indexPath.row==0{
cell.backgroundColor=UIColor.whiteColor()
cell.userInteractionEnabled=true

}

return cell

}

// method to run when table view cell is tapped


override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

if indexPath.row == 0 && flag {
flag = false
tapped = true

tableView.reloadRowsAtIndexPaths([

NSIndexPath(forRow: 1, inSection: 0),
NSIndexPath(forRow: 2, inSection: 0)], withRowAnimation: .Automatic)

}

let previousIndexPath = selectedIndexPath


if indexPath == selectedIndexPath {
selectedIndexPath = nil

}

else {
selectedIndexPath = indexPath

}

var indexPaths : Array<NSIndexPath> = []



if let previous = previousIndexPath {
indexPaths += [previous]
}

if let current = selectedIndexPath {
indexPaths += [current]

}
if indexPaths.count > 0 {
tableView.reloadRowsAtIndexPaths(indexPaths, withRowAnimation: UITableViewRowAnimation.Automatic)
}

}

override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
(cell as! callCustomCell).watchFrameChanges()
}

override func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
(cell as! callCustomCell).ignoreFrameChanges()
}

override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
for cell in tableView.visibleCells as! [callCustomCell] {
cell.ignoreFrameChanges()
}
}

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if indexPath == selectedIndexPath {
return callCustomCell.expandedHeight
} else {
return callCustomCell.defaultHeight
}


}

}

最佳答案

在 Storyboard的属性检查器选项卡中使用标签,然后使用 if 语句来更改返回的内容

if (pickerView.tag == 0) {
// Do something
} else if (pickerView.tag == 1 {
// Do something
} else {
// Do something
}

您甚至可以使用 switch 语句。可能看起来更干净。

关于ios - 如何多次使用相同的 UIPickerView 和不同的数据? - swift ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39169542/

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