ios - 如何获取一个表格,其中填充了从 iOS 应用程序的另一个屏幕获取的条目?

标签 ios swift uitableview segue custom-cell

我正在制作一个应用程序,其中我从一个屏幕获取用户的条目并在另一个屏幕上处理和打印它们,这两个屏幕不是连续的屏幕。问题是,后面的屏幕没有填充第一个屏幕的详细信息数组 以下是为此输入、处理和输出连接的代码文件

.......................pool.swift.......................

import UIKit
class Pool: NSObject
{
var name:String = ""
var route:String = ""
var date: String = ""
var capacity: Int = 4
var  car: String = ""
//var photo: UIImage
var email:String = ""

init(name:String, route:String, date: String, capacity: Int, car: String, email:String)
{
    self.name = name
    self.route = route
    self.date = date
    self.capacity = capacity
    self.car = car
    self.email = email
}

............PoolManager.swift............

import UIKit

class PoolManager: NSObject
{
static var pools = [Pool]()

class func AddPool(name:String, route:String, date: String, capacity: Int, car: String, email:String)
{
    let p = Pool(name: name, route:route, date:date, capacity: capacity, car:car, email:email)

    pools.append(p)
}

class func DeletePool(id: Int)
{
    pools.removeAtIndex(id)
}

class func GetPool() -> [Pool]
{
    return pools
}

}

......UsePoolViewController.swift............

import UIKit

class UsePoolViewController: UITableViewController
{

//let array = ["Ulhasnagar to Bandra", "Thane to Ghatkopar", "Kalyan to Thane", "Thane to Colaba"]

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

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {
        let cell =  tableView.dequeueReusableCellWithIdentifier("customcell")! as! customcell

        let pooler = PoolManager.pools[indexPath.item]

        cell.cellbox?.route = pooler.route
        // this statement doesnt work properly, cellbox gets a nil value.

        return cell

    }

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
    if segue.identifier == "PoolingDetails"
    {
        let cell = sender as! customcell

        let PoolingDetails = segue.destinationViewController as! UsePoolDetailsViewController

        PoolingDetails.heading = cell.cellbox?.route




    }

}

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

......UsePoolDetailsViewController.swift........

  import UIKit

class UsePoolDetailsViewController: UIViewController
{
var heading:String?

override func viewDidAppear(animated: Bool)
{
    self.title = heading
}
}

....customcell.swift......

import UIKit

class customcell: UITableViewCell
{
var cellbox:Pool?
}

最佳答案

第一个选项:您可以创建一个 SharedClass,其中包含整个应用程序所需的数据。在您的情况下,您需要定期更新共享数据,以访问应用程序其他屏幕上的更新数据。

第二个选项:您可以使用 NSUserDefaults 来保留可以在整个应用程序中使用的数据。

关于ios - 如何获取一个表格,其中填充了从 iOS 应用程序的另一个屏幕获取的条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35918240/

相关文章:

ios - 如何从 Viewcontroller 转到 UITableViewCell

ios - 如何在 iOS 上将两个标签依次放入表格 View 单元格中?

objective-c - 几个 UIViewController 和 OpenGLView (Cocos2D) 之上的透明 UITableView

ios - 防止 UIStackView 压缩 UITableView

ios - 在 Swift 中将 %1$s 等占位符转换为 {x}

ios - Interface Builder 中 deviceRGB 和 calibratedRGB 的区别?

ios - 安全区域与 iOS9/10/11 兼容 - 以编程方式

ios - 如何在 iOS 应用程序中连接到 EC2 实例

ios - 委托(delegate)在 AFNetworking 响应 block 中变为 nil?

ios - 从 PHAsset 获取视频时如何检测视频是否为横向/纵向?