如何在 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 中创建具有 n 行数的 UITextField