如何在 swift 中创建 UITableView 类的实例

Posted

技术标签:

【中文标题】如何在 swift 中创建 UITableView 类的实例【英文标题】:How to creat an instance of an UITableView class in swift 【发布时间】:2016-02-13 14:38:17 【问题描述】:

我有两个课程:

//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...

我的问题:

为什么我无法从“TestClass”访问“MyTableView”类?我总是得到例外:

在展开可选值时意外发现 nil

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

【问题讨论】:

【参考方案1】:

    你不应该使用以大写字母开头的变量名:

    @IBOutlet var MyTableView: UITableView!

这是不好的做法,可能会导致代码混乱

    MyTableView 类的实例化只是调用它的默认构造函数,在这种情况下,它不会实例化该类中的 MyTableView 属性。您必须使用以下内容从情节提要中实例化它:

    self.storyboard.instantiateViewControllerWithIdentifier("MyTableViewIdentifier")
    

【讨论】:

补充一点,为了清楚起见,class MyTableView 真的应该重命名为 class MyTableViewController 好的,这似乎是一个好方法 :) 但我不明白如何实施您的解决方案。当我尝试在我的 TestClass 中实现您的代码时,它说:“TestClass 类型的值没有成员 'storyboard'” 所以我将您的代码更改为 self. myTableView.storyboard.instantiateViewControllerWithIdentifier("MyTableViewIdentifier")... 现在我得到了同样的错误:意外发现 nil while。 .. storyboard 是视图控制器上的一个属性。如果您没有之前从故事板加载的视图控制器的实际实例,您可以使用 UIStoryboard(name: "MyStoryboard", bundle: NSBundle.mainBundle()) 实例化故事板

以上是关于如何在 swift 中创建 UITableView 类的实例的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Swift 中嵌入 UITableView 的文本字段中检索数据?

如何在 UITableView 中创建 2 列

如何在 UITableview 中创建具有 n 行数的 UITextField

如何在 UITableView 中创建单行视图分隔符

如何在自定义 UITableViewCell 中创建 UIImageVIew? (迅速)

如何在 UItableview 中创建“页脚部分”[关闭]