gpt4 book ai didi

swift - 分配与 UIPickerView 上显示的不同的输出值

转载 作者:行者123 更新时间:2023-11-28 07:49:57 25 4
gpt4 key购买 nike

昨天我一直在这个网站上搜索这个问题的答案,但我没能找到这个。我是一名业余编码员,实际上只是为一家小型组织做这件事,看看我们是否可以帮助改进流程。

这是我正在尝试做的。我正在尝试制作一个应用程序,允许某人选择一个帐号、一项任务,然后它会输出一个完整帐号的数字,他们可以将其放在收据上。

例如,某人选择帐号12345678910,他们选择“打扫卫生”。我希望该应用吐出一个完整的帐号,例如 12345678910 58392,其中 58932 与“清洁浴室”相关联,但实际上并未显示在 PickerView 上。我在这方面遇到了麻烦。编码是我一直想学的东西,但一直在业余时间做,所以如果有错误,请原谅业余爱好。为此,我一直在使用 YouTube 视频。

感谢任何帮助。非常感谢! Sample app screen-shot

import UIKit

class Account {
var account: String
var jlCode: [String]

init(account:String, jlCode:[String]) {
self.jlCode = jlCode
self.account = account
}
}

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {

@IBOutlet weak var pickerView: UIPickerView!
@IBOutlet weak var accountLbl: UILabel!

var accounts = [Account]()

@IBAction func showPopup(_ sender: Any) {
let popOverVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "sbPopUpID") as! PopUpViewController
self.addChildViewController(popOverVC)

popOverVC.view.frame = self.view.frame
self.view.addSubview(popOverVC.view)

popOverVC.didMove(toParentViewController: self)
}

override func viewDidLoad() {

pickerView.delegate = self
pickerView.dataSource = self

//This area will have to be changed once you get the right information.

accounts.append(Account(account: "12345678910", jlCode: ["task 1", "task 2", "task 3", "task 4"]))
accounts.append(Account(account: "1112131415", jlCode: ["Task 1"]))
accounts.append(Account(account: "1617181920", jlCode: ["task 1", "task 2", "task 3", "task 4"]))
accounts.append(Account(account: "2122232425", jlCode: ["task 1", "task 2", "task 3", "task 4"]))

super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}

func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 2
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if component == 0 {
return accounts.count
} else {
let selectedAccount = pickerView.selectedRow(inComponent: 0)
return accounts[selectedAccount].jlCode.count
}
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if component == 0 {
return accounts[row].account
} else {
let selectedAccount = pickerView.selectedRow(inComponent: 0)
return accounts[selectedAccount].jlCode[row]
}
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
pickerView.reloadComponent(1)

let selectedAccount = pickerView.selectedRow(inComponent: 0)
let selectedjlCode = pickerView.selectedRow(inComponent: 1)
let account = accounts[selectedAccount].account
let jlCode = accounts[selectedAccount].jlCode[selectedjlCode]

accountLbl.text = "Account Number: \(account)\nJL Code: \(jlCode)"
}
}

最佳答案

如果,那是一个很大的IF,我理解正确你的问题是你没有将任务的描述与与任务。换句话说,您似乎只是在为数据建模而苦苦挣扎。

我认为类似下面的内容可能会帮助您朝着正确的方向前进:

struct Account {
var number: Int
var tasks: [Task]

var description: String { return "\(number)" }
}

struct Task {
var number: Int // or JLNumber, or whatever you want to call it
var description: String
}

这会让您像这样设置帐户:

let account = Account(number: 12345678910, tasks: [Task(number: 58932, description: "Cleaning the bathroom")])

您将在 pickerView 中显示 .description,并在任何有意义的地方使用 .number

如果任务的不同类型预定义的,(即它们永远不会在代码不改变的情况下改变)你应该看看enums 而不是使用字符串和整数动态创建它们......

关于swift - 分配与 UIPickerView 上显示的不同的输出值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49968639/

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