如何根据用户选择将图像添加到表视图单元格

时间:2014-07-22 17:10:35

标签: xcode swift

基本上我有一个表视图控制器,我用事务填充。当用户点击添加按钮时,用户可以选择通过分段控件输入付款或信用。

我试图找出如何显示(例如)信用卡的绿色箭头图像,以及根据用户选择的内容在每个单元格中显示付款的红色箭头?顺便说一下,我正在使用Swift。

这是细胞目前的样子。我希望箭头位于“金额”的左侧。标签

enter image description here

非常感谢任何帮助。

以下是我目前的代码......

ThirdViewController:

var arrayObject = ArrayData()

class ThirdViewController: UITableViewController {

@IBAction func addNewPaymentButton(sender : AnyObject) {
    //Add code for adding a new payment here
}

override func viewWillAppear(animated: Bool) {
    self.tableView.reloadData()
}

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

    if transactionType == 0 {
        cell.paymentArrowImage.hidden = false
    } else if transactionType == 1 {
        cell.creditArrowImage.hidden = false
    }

    return cell
}

override func tableView(tableView: UITableView!, canEditRowAtIndexPath indexPath: NSIndexPath!) -> Bool {
    return true
}

override func tableView(tableView: UITableView!, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath!) {
    if (editingStyle == UITableViewCellEditingStyle.Delete) {
        //Add code for deletion
    }
}
}

这是FifthViewController的唯一相关代码:

        arrayDataPayments.addObject(transactionName)
    arrayDataCost.addObject("£\(finalUserBudget)")
    arrayDataDate.addObject(transactionDateInputted)

ArrayData

var arrayDataPayments: NSMutableArray = []
var arrayDataCost: NSMutableArray = []
var arrayDataDate: NSMutableArray = []

class ArrayData: NSObject {

func paymentsArray() -> NSMutableArray { return arrayDataPayments }

func costArray() -> NSMutableArray { return arrayDataCost }

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

CustomTransactionTableViewCell

class CustomTransactionTableViewCell: UITableViewCell {

    @IBOutlet var paymentNameLabel : UILabel
    @IBOutlet var dateLabel : UILabel
    @IBOutlet var costLabel : UILabel
    @IBOutlet var creditArrowImage: UIImageView
    @IBOutlet var paymentArrowImage: UIImageView

    init(style: UITableViewCellStyle, reuseIdentifier: String) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        // Initialization code
    }

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

请原谅全局变量。它们只是暂时的。

1 个答案:

答案 0 :(得分:1)

这与表视图的其他所有内容完全相同。您的单元格中将会显示图像视图。是否在该图像视图中显示图像以及显示的图像是否必须是模型的一部分,以便模型处理知道这个关于每一行的信息。然后在cellForRowAtIndexPath:显示来自视图中模型的信息,在单元格中设置图像视图的图像以查找您所询问的任何行。