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
}
}
答案 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
以使其更容易)。
使用这些属性添加到集合中,然后使用更新的集合刷新视图。