我想创建一个可重复使用的视图控制器
目标是继承
但不幸的是,那并没有起作用。
UsersViewControllerBase
。
UsersViewControllerBase
继承自UIViewController
,并实现了两个代理(UITableViewDelegate
,UITableViewDataSource
),并拥有两个视图(UITableView
,UISegmentedControl
)。目标是继承
UsersViewControllerBase
的实现,并在UsersViewController
类中自定义分段控件的分段项。class UsersViewControllerBase: UIViewController, UITableViewDelegate, UITableViewDataSource{
@IBOutlet weak var segmentedControl: UISegmentedControl!
@IBOutlet weak var tableView: UITableView!
//implementation of delegates
}
class UsersViewController: UsersViewControllerBase {
}
UsersViewControllerBase
在故事板中已经存在,并且所有的插座已连接,标识符也已指定。
问题是如何初始化 UsersViewController
来继承 UsersViewControllerBase
的所有视图和功能。
当我创建 UsersViewControllerBase
实例时,一切都正常工作。
let usersViewControllerBase = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()).instantiateViewControllerWithIdentifier("UsersViewControllerBase") as? UsersViewControllerBase
但是当我创建UsersViewController
实例时,我的nil
插座
(在故事板中创建了一个简单的UIViewController
并将UsersViewController类分配给它)
let usersViewController = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()).instantiateViewControllerWithIdentifier("UsersViewController") as? UsersViewController
看起来视图没有被继承。
我期望在UsersViewControllerBase
中有一个init方法,该方法从storyboard获取带有视图和输出口的控制器:
class UsersViewControllerBase: UIViewController, UITableViewDelegate, UITableViewDataSource{
@IBOutlet weak var segmentedControl: UISegmentedControl!
@IBOutlet weak var tableView: UITableView!
init(){
let usersViewControllerBase = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()).instantiateViewControllerWithIdentifier("UsersViewControllerBase") as? UsersViewControllerBase
self = usersViewControllerBase //but that doesn't compile
}
}
我将初始化UsersViewController
:
let usersViewController = UsersViewController()
但不幸的是,那并没有起作用。