我已经构建了一个非常简单的演示应用程序来说明我在使用安装了tableView的UIViewController时发现的两个错误。如果我使用标准的UITableviewController,则不会出现这些问题。
基本上,当我慢慢刷新时,我会向下跳跃(大约30点)。我还需要在复习器激活之前拖动一点点(屏幕的一半左右)。如果我快速拉,问题就不存在了。
如果我同时实现了hideNavigationBarOnSwipe和refreshControl,则节标题因为所有丑陋且不合适(在视频中稍后显示)。
我想知道,对于这种类型的错误,如果我想拍摄看看Apple是否改进了它,我应该给它一个以下三个选项中的哪一个。 (这个项目建立在xcode7.3,swift 2,IOS9.0
上----完整代码----
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var myTableView: UITableView!
var refreshControl: UIRefreshControl!
override func viewDidLoad() {
super.viewDidLoad()
myTableView.delegate = self
myTableView.dataSource = self
navigationController!.hidesBarsOnSwipe = true
refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: #selector(ViewController.refresh), forControlEvents: .ValueChanged)
myTableView.addSubview(refreshControl)
}
func refresh() {
}
@IBAction func stopRefreshingBtnPressed(sender: AnyObject) {
refreshControl.endRefreshing()
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 10
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath)
cell.textLabel?.text = "section \(indexPath.section) row \(indexPath.row)"
return cell
}
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 20
}
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return "Section Header \(section)"
}
}
答案 0 :(得分:2)
override func viewDidLoad() {
super.viewDidLoad()
myTableView.delegate = self
myTableView.dataSource = self
navigationController!.hidesBarsOnSwipe = true
refreshControl = UIRefreshControl()
//Create an instance of a UITableViewController. This will host your UITableView.
let tableController = UITableViewController()
//Add tableController as a childViewController and set its tableView property to your UITableView.
self.addChildViewController(tableController)
tableController.tableView = myTableView
tableController.refreshControl = self.refreshControl
}