如何在swift

时间:2016-02-13 14:38:17

标签: swift uitableview uiview uiviewcontroller

我有两节课:

//This is my custom class, where I would like to get access to 'MyTableView' class

import UIKit

class TestClass: NSObject {

    //Instance variable 'myTableView'
    var myTableView: MyTableView!

    override init() {
        super.init()

        //Creat an instance!
        myTableView = MyTableView()
    }

    func ReloadTableView() {

         //Reload the current TableView
         myTableView.MyTableView.reloadData()
    } 
    //My functions...
}
//This is 'MyTableView' class which is connected to a TableViewController in storyboard. When I open the corresponding TableView in my App, the viewDidLoad function is called.
import UIKit
class MyTableView: UITableViewController {

    @IBOutlet var MyTableView: UITableView!

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

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

//Functions to creat the current TableView with it's information...
}

我的问题:

为什么我无法访问' MyTableView'来自' TestClass'的课程我总是得到例外:

  

在解包可选值时意外发现nil

是否有可能获取有关活动视图的信息? 谢谢!

1 个答案:

答案 0 :(得分:2)

  1. 您不应该使用以大写字母开头的变量名称,如下所示:

    @IBOutlet var MyTableView:UITableView!

  2. 这是不好的做法,可能导致令人困惑的代码

    1. 您对MyTableView类的实例化只是在其上调用默认构造函数,在这种情况下,它不会在该类中实例化MyTableView属性。您必须使用以下内容从故事板中实例化它:

      self.storyboard.instantiateViewControllerWithIdentifier("MyTableViewIdentifier")