我在Storyboard
中创建了UITableView
,其中包含class ViewController: UIViewController, UITableViewDataSource
{
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad()
{
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool)
{
super.viewDidAppear(animated)
print(self.tableView.subviews) //HERE..!!!
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return 5
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
return tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
}
}
。
subViews
问题:我遇到UITableView
tableView.subviews
的问题。
在iOS-10 中,执行UITableViewWrapperView
时,我将UITableViewWrapperView
作为其中一个元素以及数组中的其他元素。
但iOS-11中的 ,tableView.subviews
返回的数组中没有hitTest:withEvent:
。
因此,我在UITableView
上覆盖for i in range(0, 7):
Grid.columnconfigure(self.labelF,index=i, weight=1)
Label(self.labelF, text="Measurement ID", anchor=W, width=0).grid(row=0, column=0, sticky=W+E)
Label(self.labelF, text="Sample ID", anchor=W, width=0).grid(row=0, column=1, sticky=W+E)
Label(self.labelF, text="Meat Type", anchor=W, width=0).grid(row=0, column=2, sticky=W+E)
Label(self.labelF, text="Time", anchor=W, width=0).grid(row=0, column=3, sticky=W+E)
Label(self.labelF, text="Temperature", anchor=W, width=0).grid(row=0, column=4, sticky=W+E)
Label(self.labelF, text="Measurement", anchor=W, width=0).grid(row=0, column=5, sticky=W+E)
Label(self.labelF, text="Comment", anchor=W, width=0).grid(row=0, column=6, sticky=W+E)
时遇到问题。
答案 0 :(得分:2)
在 iOS-11 中,Apple已从UITableViewWrapperView
层次结构中删除了table view
,已在链接中确认:https://forums.developer.apple.com/thread/82320
我遇到hitTest:withEvent:
的问题,因为它早先应用于tableView.subviews.first
,即UITableViewWrapperView
。
现在,我在hitTest
本身而不是UITableView
上应用了wrapper view
,即
class TableView: UITableView
{
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView?
{
if let hitView = super.hitTest(point, with: event) , hitView != self
{
return hitView
}
return nil
}
}
终于搞定了。