BucketTableViewController

BucketTableViewController

我正在构建一个包含tableView控制器的容器视图的应用程序。我创建了这个tableView,但是我不知道如何再次访问这个对象,所以我可以对它调用函数。目前有一个BucketTableViewController对象正在自动创建(可能是从故事板)。然后,我想对它调用一个函数并创建另一个BucketTableViewController对象。我可以用那个方法的print语句来验证它们是唯一的。如何为原始对象设置变量?

import UIKit

class FirstViewController: UIViewController {


    var bigArray = ["M", "A", "R", "C"]
    let delegate = UIApplication.sharedApplication().delegate as! AppDelegate

    override func viewDidLoad() {
        super.viewDidLoad()
        reachForWebsite()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func reachForWebsite(){
        let url = NSURL(...)
        let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
            do {
                ...
                // HERE IS THE ISSUE
                var bucketsVC = BucketTableViewController()
                bucketsVC.updateBuckets(self.bigArray)
            } catch let myJSONError {
                print(myJSONError)
            }
        }
        task!.resume()
    }
}

最佳答案

您可以在拥有容器的视图控制器中从prepareForSeque(_:sender:)获取对它的引用。确保标识符与您在界面生成器中从情节串连板设置的段上的标识符的名称匹配。或者,如果您确定没有目的地类型为BucketTableViewController的其他段,则可以省略标识符部分。

class BucketTableViewController: UITableViewController {}

class FirstViewController: UIViewController {

    var bucketViewController: BucketTableViewController!

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        super.prepareForSegue( segue, sender: sender )

        if let vc = segue.destinationViewController as? BucketTableViewController where segue.identifier == "embeddedBuketViewcontroller" {
            self.bucketViewController = vc
        }
    }
}

09-15 17:32