【问题标题】:Page Control UITableView Swift页面控制 UITableView Swift
【发布时间】:2018-10-30 17:08:01
【问题描述】:

我的 tableview 有一个包含 50 多个数据的单元格列表,我不想在我的 tableView 中显示超过 50 个单元格。我只想每页显示 5 个单元格,每当我滚动时,我的页码可以增加/减少。

我想向下滚动,我的应用程序转到下一页,而我向上滚动,我的应用程序转到上一页。我该怎么做?

override func viewDidLoad() {
    super.viewDidLoad()
updatePropertyListWithDistrict(district: "ABC")
}

var currentPage : Int = 1
var listLimit : Int = 5

// getting property list
func updatePropertyListWithDistrict(district: String) {
    PSPWCFService.sharedClient.PropertyList(district: district, PageNumber: currentPage, PageSize: listLimit) { (json, error) in
        MBProgressHUD.hide(for: self.view, animated: true)
        if let error = error {
            print(error.localizedDescription)
            return
        }
        let jsonArray = json?.array

        for object in jsonArray! {
            let newProperty: Property = Property(json: object)

            self.properties.append(newProperty)
        }
        self.tableView.reloadData()

        if (self.properties.count == 0)
        {
            let alertController = UIAlertController(title: "Alert", message:
                "No listings available in the area. ", preferredStyle: UIAlertControllerStyle.alert)
            alertController.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.default,handler: nil))

            self.present(alertController, animated: true, completion: nil)
        }
    }

}

func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {

    //Bottom Refresh

    if scrollView == tableView{

        if ((scrollView.contentOffset.y + scrollView.frame.size.height) >= scrollView.contentSize.height)
        {
            currentPage += 1
            self.tableView.reloadData()
                }
            }
    }

【问题讨论】:

标签: ios swift uitableview pagination


【解决方案1】:

您只需要在部分滚动视图下的属性检查器中启用表格视图的分页即可。

只需单击情节提要中的表格视图,转到属性检查器,在滚动视图部分下,只需选中“启用分页”选项

如下声明两个变量

  var contentOffset:CGFloat = 0
  var page = 0

然后

  override func viewDidLoad() {
    super.viewDidLoad()
    page = 1
}

然后实现scrollView的方法

  func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    print(scrollView.contentOffset)
    if scrollView.contentOffset.y > contentOffset {
        page += 1
        pageNumberLabel.text = page.description
    } else if scrollView.contentOffset.y < contentOffset {
        page -= 1
        pageNumberLabel.text = page.description
    }
    contentOffset = scrollView.contentOffset.y
}

这将为您完成工作,但是当您慢慢滚动 tableView 时会出现问题,它只会滚动一些行而不是所有显示的行。很遗憾,目前无法找到解决方案,但一定会在空闲时间尝试。

【讨论】:

  • 嗯……它只是让我的滚动有点迟钝……没有帮助
  • 现在不要使用滚动代理。我检查过它没有滞后
  • 我正在处理页码部分,稍后会发布兄弟
  • 如果你喜欢我的作品,请通过投票来感谢它:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-09
  • 1970-01-01
相关资源
最近更新 更多