gpt4 book ai didi

xcode - 在 Swift 中的类之间传递变量

转载 作者:行者123 更新时间:2023-11-30 10:23:10 26 4
gpt4 key购买 nike

我有一个名为 ThirdViewController 的 TableView Controller ,它显示事务列表。当用户按下添加按钮时,应用程序将转到 FifthViewController,用户可以在其中输入交易名称、值(value)和日期。我试图将 FifthViewController 中输入的数据输入到名为 ArrayData 的类中,以便我可以将其添加到数组中,然后该数组会将付款添加到 ThirdViewController TableView 中。

这是我的 ThirdViewController.swift 代码:

var arrayObject = ArrayData()

class ThirdViewController: UITableViewController {

override func viewDidLoad() {
super.viewDidLoad()

// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false

// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

// #pragma mark - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView?) -> Int {
// #warning Potentially incomplete method implementation.
// Return the number of sections.
return 1
}

override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete method implementation.
// Return the number of rows in the section.
return arrayObject.paymentsArray().count
}


override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
var cell:CustomTransactionTableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as CustomTransactionTableViewCell
cell.paymentNameLabel.text = (arrayObject.paymentsArray().objectAtIndex(indexPath.row)) as String
cell.costLabel.text = (arrayObject.costArray().objectAtIndex(indexPath.row)) as String
cell.dateLabel.text = (arrayObject.dateArray().objectAtIndex(indexPath.row)) as String
return cell
}
}

这是 arrayData.swift 的代码:

class ArrayData: NSObject {

func paymentsArray() -> NSMutableArray {
var arrayDataPayments: NSMutableArray = ["Test"]
return arrayDataPayments
}

func costArray() -> NSMutableArray {
var arrayDataCost: NSMutableArray = ["£100"]
return arrayDataCost
}

func dateArray() -> NSMutableArray {
var arrayDataDate: NSMutableArray = ["12/07/14"]
return arrayDataDate
}

}

这是 FifthViewController 的代码:

class FifthViewController: UIViewController {

@IBOutlet var transactionNameInput : UITextField
@IBOutlet var transactionDateInput : UITextField
@IBOutlet var transactionValueInput : UITextField
@IBOutlet var addBackButton : UIButton

@IBAction func addTransactionButton(sender : AnyObject) {
self.navigationController.popToRootViewControllerAnimated(true)

var transactionName = transactionNameInput.text
var transactionDate = transactionDateInput.text
var transactionValue = transactionValueInput.text
}

@IBAction func viewTapped(sender : AnyObject) {
//Closes keyboard when user touches screen

transactionDateInput.resignFirstResponder()
transactionNameInput.resignFirstResponder()
transactionValueInput.resignFirstResponder()
}

override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.
}
}

如何将变量从 FifthViewController 获取到 ArrayData 类,以便将它们添加到数组中?这可能非常简单,但我是 Xcode 的新手,而且显然是 Swift。

任何帮助将不胜感激。

最佳答案

ArrayData 类中的方法的实现是笨拙,因为每次调用都会返回一个新数组。也许这就是您真正想要的,但它很不寻常(并且您已经注意到您是 Xcode 和 Swift 的新手,因此我怀疑这不是您真正想要的)。更正常的实现是:

class ArrayData: NSObject {
var arrayDataPayments: NSMutableArray = ["Test"]
var arrayDataCost: NSMutableArray = ["£100"]
var arrayDataDate: NSMutableArray = ["12/07/14"]

func paymentsArray() -> NSMutableArray { return arrayDataPayments }

func costArray() -> NSMutableArray { return arrayDataCost }

func dateArray() -> NSMutableArray { return arrayDataDate }
}

现在,我并不是说这将解决从 Controller 中获取数据的更大问题;但是,我怀疑以上是一个更好的开始。

关于xcode - 在 Swift 中的类之间传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24829142/

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