我的Popover控制器弹出一个空白的TableView,我不明白为什么。我试过改变单元格和视图的颜色,当我点击弹出窗口时,这似乎都没有出现。
以下是启动popover的代码:
@IBAction func popOverButton(_ sender: UIButton)
{
let controller = TableViewController()
controller.modalPresentationStyle = .popover
// configure the Popover presentation controller
let popController: UIPopoverPresentationController? = controller.popoverPresentationController
popController?.permittedArrowDirections = [.down]
popController?.delegate = self
popController?.sourceView = sender
popController?.sourceRect = sender.bounds
popController?.backgroundColor = .white
self.parent?.present(controller, animated: true, completion: { })
}
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle
{
return UIModalPresentationStyle.none
}
这是我的Tableview控制器的代码,我在制作常规ViewController之前尝试了另一种方法,将tableview放到它上面但产生了相同的结果。 导入UIKit
class TableViewController: UITableViewController {
var categories = PTTableView().titles
//PTTableview.titles is a populated array from another viewcontroller and it is not empty
@IBOutlet var tableiViewOne: UITableView!
override func viewDidLoad()
{
super.viewDidLoad()
}
override func numberOfSections(in tableView: UITableView) -> Int
{
return 0
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return categories.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableiViewOne.dequeueReusableCell(withIdentifier: "myCell", for: indexPath) as! PopOverTableViewCell
cell.cellLabelOne.text = categories[indexPath.row]
return cell
}
}
是的,故事板上的tableviewcontroller被设置为TableViewController。
更新: 我已经将tableviewcontroller上的部分数量更改为1,现在我的应用程序崩溃说致命错误:在展开Optional值时意外发现nil (LLDB) 突出显示
let cell = tableiViewOne.dequeueReusableCell(withIdentifier: "myCell", for: indexPath) as! PopOverTableViewCell
我在故事板上有相同的单元名称,并且它设置为同一个类
答案 0 :(得分:0)
您正在为0
方法返回numberOfSections
。这将生成一个空表。
您至少应该有1个部分来显示您的数据。因此,您需要将其更改为return 1
答案 1 :(得分:0)
您是否设置了dataSource和委托?
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
}