首页 > 解决方案 > UITableViewController 作为数据输入屏幕(iOS,Swift)一个日历应用程序“新事件”屏幕

问题描述

我的应用程序跟踪事件。用户可以创建新活动或加入现有活动。事件有标题、位置、开始日期、可选的结束日期等。

我有一个UITableViewController显示事件列表,带有一个自定义单元格的沼泽标准。

我创建事件的数据输入屏幕(参见图 2)也是一个UITableViewController,类似于 Apple iOS 日历应用程序的“新事件”屏幕(参见图 1)。我创建了多个原型单元(一个带有 a UITextField,另一个带有 a UIDatePicker,另一个带有 aUICollectionView等)。因此,屏幕工作正常,但是...

我正在尝试在“创建展开转场”部分中创建一个展开转场,就像Apple 的本教程一样。第 7 步 - 没问题。第 8 步 - 哎呀!

在教程中,有简单的控件来收集数据、创建“膳食”、将其添加到膳食数组并返回膳食列表。但是,我有一个 UITableViewController。

我不知道如何收集数据以创建我的事件、将其添加到数组等。

我是否需要在不使用 的情况下重新设计我的 UI UITableViewController?对于这种情况,它似乎是完美的 UI。

iOS 日历应用新事件屏幕 我的应用程序数据输入屏幕

标签: iosswiftuitableviewunwind-seguedata-entry

解决方案


您可以使用 Delegates 从 Table xib 获取数据到您想要的任何控制器,希望这会有所帮助

1.将此方法添加到您的xib的viewcontroller文件之上

protocol ViewModelDelegate
{
    func sendValue(from PassData: String?)

}

class XibViewController: UITableViewCell {

    var controller:HomeViewController()

    override func awakeFromNib() {
        super.awakeFromNib()
        controller.delegate = self

    }

    //call this method on any button action or save 
    controller.sendValue(from PassData:String?)




}
  1. 创建一个函数,您希望将所有数据提取到视图控制器中。

        class:HomeViewController:UITableViewController
        {
        override func viewDidLoad()
        {
    
         super.viewDidLoad()
    
        }
    
        func sendValue(from PassData:String?)
        {
           //code to get the data from picker or textfield
    
        }   
        }
    

推荐阅读