如何保存数据并回归集合视图?

时间:2016-12-06 00:25:58

标签: swift uicollectionview uicollectionviewcell

tl;博士:我无法弄清楚如何从NewTransactionViewController转到我的主CollectionViewController,回过头来,将NewTransactionViewController中的数据添加到我的收藏列表视图中。我在网上找到的东西要么太基础了,要么太复杂了。基本上我试图模仿UITableView,但我稍后会使用集合来获得更多动态功能(另外我想要多列的选项)。

我是编程新手,我正在尝试设置一个简单的预算应用来记录交易。目标是让用户通过填写​​详细信息来添加新事务,当他们点击" save"时,它会回到之前的VC并添加这些详细信息并更新集合视图。

提前感谢您的帮助!

//  ViewController.swift
import UIKit

class NewTransactionViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate
{
    //Add new transaction cell to master list
    @IBAction func addNewTransaction(_ sender: UIBarButtonItem)
    {
        //Unsure how to implement
    }

class CollectionViewController: UICollectionViewController
{
    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
    {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as UICollectionViewCell

        let categoryLabel = cell.viewWithTag(1) as! UILabel
        categoryLabel.text = categoryArray[indexPath.row]

        let balanceLabel = cell.viewWithTag(2) as! UILabel
        balanceLabel.text = balanceArray[indexPath.row]

        return cell
    } 
}

Storyboard Layout Example

2 个答案:

答案 0 :(得分:0)

在您的故事板中,看起来您有一个导航控制器,其中,CollectionViewController是根视图控制器。然后将NewTransactionViewController推送到导航控制器上。

因此,从NewTransactionViewController的角度来看,CollectionViewController是:

self.navigationController!.viewControllers[0] as! CollectionViewController

使用该引用,您现在可以调用方法或设置集合视图控制器的属性。

答案 1 :(得分:0)

我不确定我理解你的问题,但是......

使用展开式序列。请参阅:What are Unwind segues for and how do you use them?

CollectionViewController中实施展开segue动作功能。例如:@IBAction func saveNewTransation(segue: UIStoryboardSegue) { }

确保在Save中调用此展开segue操作(例如,通过NewTransactionViewController按钮的操作)(控制从“保存”按钮拖动到视图控制器的“退出”符号在界面构建器中,从显示的弹出窗口中选择操作。

然后在您的展开segue中,您将可以通过NewTransactionViewController UIStoryboardSegue's属性(source)访问已请求展开序列的UIViewController。获得此NewTransactionViewController后,您可以访问其所有属性(首先将UIViewController投射到NewTransactionViewController以使其更容易)。

使用这些属性添加到集合中,然后使用更新的集合刷新视图。