UITableView不会滚动,但可以选择单元格

时间:2018-03-01 09:30:14

标签: ios swift uitableview

我的应用程序中有一个UITableView,以编程方式填充。 UITableview本身是通过Interface Builder创建的。

现在在加载任何单元格之前,我可以移动表格。但是,在表的填充之后,滚动被禁用了吗?

单元格仍然可以选择,但我无法滚动。现在我检查了重叠的视图,我做了view.bringSubview(toFront: tableView),我检查了UIGestureRecognizers,但似乎没有任何东西可以窃取点击/点击/滑动......

经过一些调试后,我发现numberOfRowsInSection返回25,因此从技术上来说滚动应该是可能的......

有没有人有这方面的经验?也许我错过了一个设置?

编辑:

我的viewController:

class RegisterHomeCourseViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    var courses: [Course] = []
    @IBOutlet weak var tableView: UITableView!


    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.contentInset = UIEdgeInsetsMake(48, 0, 0, 0)

    }

    func updateLocation() {
        locationManager.requestAlwaysAuthorization()
        self.currentLocation = self.locationManager.location
        self.refreshLocation()
        self.update()
    }

    func refreshLocation() {
        locationManager.requestAlwaysAuthorization()

        if CLLocationManager.authorizationStatus() == CLAuthorizationStatus.authorizedAlways {
            self.currentLocation = self.locationManager.location

        }
    }

    func update() {
        _ = Course.find(query: searchText, callback: self.makeCourses)   
    }   

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.tableView.delegate = self
        self.tableView.dataSource = self
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }



    @IBAction func backButtonPressed(_ sender: Any) {
        self.navigationController?.popViewController(animated: true)
    }


    func setupRX() {
        _ = self.searchTextField.rx.text.orEmpty.throttle(0.3, scheduler: MainScheduler.instance).distinctUntilChanged().bind { [unowned self] text in
            self.search = nil

            if text.count > 2 {
                self.search = text
            }

            self.update()
        }
    }

    func makeCourses(result: Result<[Course]>) {
        switch result {
        case .success(let courses):
            self.courses = courses

            self.tableView.reloadData()
        case .failure(_):
            return
        }
    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let course = courses[indexPath.row]
        RegisterViewModel.shared.homeCourse = course
        self.performSegue(withIdentifier: "nextStep", sender: nil)
        tableView.deselectRow(at: indexPath, animated: false)
    }


    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let course = self.courses[indexPath.row]
        let cell = tableView.dequeueReusableCell(withIdentifier: CourseTableViewCell.identifier, for: indexPath) as! CourseTableViewCell
        if currentLocation != nil {
             cell.make(course, location: currentLocation.coordinate)
        } else {
            cell.make(course, location: nil)
        }


        return cell
    }


    func numberOfSections(in tableView: UITableView) -> Int {

        return 1
    }

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 70
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return courses.count
    }
}

0 个答案:

没有答案