Ryg*_*uyu 1 uitableview ios swift
我有一个tabBarController和两个UINavigationControllers与UITableViews连接到tabBarController.我有子类,tabBarController所以我可以通过引用传递两个表之间的自定义对象数组.但是,当我去填充数组时,tableView插座将展开为nil并且我收到错误"致命错误:在解开可选值时意外地发现nil".不知道为什么会这样.以下是代码:
tabBarController
protocol CustomTabBarDelegate {
var placeDataArray : Array <placeData> {get set}
}
class placeData: Equatable {
var description : String
var selected : Bool
init (description : String, selected : Bool) {
self.description = description
self.selected = selected
}
}
class PlacesTabBarController: UITabBarController {
var placeDataArray = Array<placeData>()
override func viewDidLoad() {
super.viewDidLoad()
placeDataArray = [placeData(description: "Afghanistan", selected: false), placeData(description: "Albania", selected: false)]
var table1 = AllPlacesViewController()
var table2 = AttendingPlacesTableViewController()
table1.delegate = self
table2.delegate = self
var navController1 = UINavigationController(rootViewController: table1)
var navController2 = UINavigationController(rootViewController: table2)
self.viewControllers = [navController1, navController2]
}
}
Run Code Online (Sandbox Code Playgroud)
tableViewControllers
var delegate:PlacesTabBarController!
Run Code Online (Sandbox Code Playgroud)
然后,例如,我可以通过调用访问该数组
delegate.placeDataArray.count
Run Code Online (Sandbox Code Playgroud)
当我去填表时
@IBOutlet weak var allPlacesTableView: UITableView!
Run Code Online (Sandbox Code Playgroud)
并使用
var cell = self.allPlacesTableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell
Run Code Online (Sandbox Code Playgroud)
抛出上面提到的错误.不知道为什么allPlacesTableView打包到零
当您像这样创建VC时,
var table1 = AllPlacesViewController()
Run Code Online (Sandbox Code Playgroud)
它们没有与故事板相关联,因此没有实现出口.使用instantiateViewControllerWithIdentifierself.storyboard 的方法:
var table1 : AllPlacesViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("AllPlaces") as AllPlacesViewController
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1161 次 |
| 最近记录: |