繁体   English   中英

Swift在swift文件之间传递数组用于tableview

[英]Swift passing array between swift files for tableview

我在一个viewcontroller中有一个按钮动作连接到另一个tableviewcontroller。 我需要通过单击按钮传递一些textfields值以显示在另一个tableview中。 在第一个视图中,我有一个全局数组:

var estRent = [AnyObject]()

在buttonAction中追加值:

@IBAction func calculateButtonAction(sender: UIButton) {
   ...
   estRent.append(weekRent)
   estRent.append(monthRent)
   estRent.append(yearRent)
   estRent.append(interestRate)
   estRent.append(loanAmount)
   estRent.append(monthInterest)
}

覆盖prepareForSegue:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    if (segue.identifier == "Load View") {
        let svc = segue.destinationViewController as! NextTableViewController
        svc.rentArray = self.estRent
    }
}

在NextTableViewController中,有一个全局数组:

var rentArray = [AnyObject]()

下一个表视图无法看到数组中的值。 感谢任何帮助。

第一视图控制器:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var nameTextField: UITextField!
    @IBOutlet weak var ageTextField: UITextField!
    @IBOutlet weak var classTextField: UITextField!

    var estRent = [AnyObject]()

    @IBAction func goButtonAction(sender: UIButton) {
        estRent.append(nameTextField.text!)
        estRent.append(ageTextField.text!)
        estRent.append(classTextField.text!)
    }

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

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        [estRent .removeAll()]
    }
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
        print(estRent)
        if (segue.identifier == "LoadView") {
            let svc = segue.destinationViewController as! RentTableViewController
            svc.rentArray = self.estRent
        }
    }

}

RentTableViewController:

import UIKit

class RentTableViewController: UITableViewController {

    var rentArray = [AnyObject]()

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

    }

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

     override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
        return rentArray.count
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{

        tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "studentCell")
        let tableCell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("studentCell", forIndexPath: indexPath)
        let rentLabel: UILabel = UILabel.init(frame: CGRectMake(10, 10, 100, 25))
        rentLabel.text = rentArray[indexPath.row] as? String

        tableCell.addSubview(rentLabel)
        return tableCell


    }

}

单击此处查看Main.storyboard图像

您必须在storyboard中将segue标识符指定为“LoadView”

点击此处查看“如何给出segue标识符”的屏幕缩写

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM