Tableview没有滚动到底部

时间:2017-02-27 05:27:09

标签: swift uitableview

我是swift和ios开发的新手。我在tableview中显示json。由于某些原因,tableview没有滚动到底部(3个单元格)。 这是tableview所在的UITableView的代码:

class AllChaptersViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {

@IBOutlet weak var tableView: UITableView!
var isLoadingTableView = true
var chapters = [Chapter]()  //Chaper Array
var chapter = [ChapterMO]()
var imageURLs = [String]()
var chaptersArray = [AnyObject]()
var base = [AnyObject]()
var uri =  ""
var path = ""
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

override func viewDidLoad() {
    super.viewDidLoad()

    Alamofire.request("https://appdata.omicronenergy.com/webindex/COMP-en.json").responseJSON { response in debugPrint(response)
        let result = response.result
        if let dict = result.value as? Dictionary<String,AnyObject>{
            if let arr = dict["data"] as! NSArray?{
                self.chaptersArray = arr as [AnyObject]
                self.tableView.reloadData()
            }
        }
    }


    Alamofire.request("https://appdata.omicronenergy.com/webindex/products-en.json").responseJSON {
        response in debugPrint(response)
        let result = response.result
        if let json = result.value as? Dictionary<String,AnyObject>{
            if let arr = json["data"] as! NSArray? {
                let tmpJson = arr[0] as! [String:AnyObject]
                self.uri = tmpJson["uri"] as! String
            }
        }
    }

    tableView.layoutMargins = .zero
    tableView.separatorInset = .zero
    tableView.contentInset = .zero
    self.automaticallyAdjustsScrollViewInsets = false
    tableView.tableFooterView = UIView()
    self.tableView.rowHeight = UITableViewAutomaticDimension
    self.tableView.reloadData()

    // Read qr code

    let qrCodeButton = UIBarButtonItem(image: UIImage(named:"qrCode"),
                                       style: .plain,
                                       target: self,
                                       action: #selector(AllChaptersViewController.readQrCode(_:)))

    let moreButton = UIBarButtonItem(image: UIImage(named:"more"),
                                     style: .plain,
                                     target: self,
                                     action: #selector(AllChaptersViewController.openDropDownMenu(_:)))

    self.navigationItem.rightBarButtonItems = [moreButton,qrCodeButton]

     }

override var prefersStatusBarHidden: Bool{
    return true
}

func readQrCode(_ sender:UIBarButtonItem!) {
    print("working")
    let vc = self.storyboard?.instantiateViewController(withIdentifier: "QRCodeViewController")
    self.navigationController!.pushViewController(vc!, animated: true)
    print("")
}

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

func openDropDownMenu(_ sender:UIBarButtonItem!) {
    print("works too")
}


override func viewWillAppear(_ animated: Bool) {
    self.navigationItem.title = "COMPANO 100"
     self.tableView.layoutSubviews()
}


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

func getData(){
    do{
        chaptersArray = try context.fetch(ChapterMO.fetchRequest())
    }
    catch {
        print("Fetching failed")
    }
}



func numberOfSections(in tableView: UITableView) -> Int {
    // #warning Incomplete implementation, return the number of sections
    return 1
}



func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell:TableViewCell = tableView.dequeueReusableCell(withIdentifier: "chapterCell", for: indexPath) as! TableViewCell
    let object = chaptersArray[indexPath.row] as! NSDictionary

    let path = object.object(forKey: "path") as! String
    let iconUrl = "https://appdata.omicronenergy.com/chapter_icons/COMP0\(path).png"

    cell.icon.sd_setImage(with: URL(string:iconUrl))
    cell.layoutMargins = .zero
    let name = object.object(forKey: "name") as! String
    cell.chapterName?.text = name
    return cell
}

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

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let path = chaptersArray[indexPath.row]["path"]
    let vc = self.storyboard?.instantiateViewController(withIdentifier: "ChapterViewController") as! ChapterViewController
    let baseURL = uri
    let title = chaptersArray[indexPath.row]["name"]
    vc.title = title as! String
    vc.baseURL = baseURL
    vc.path = path! as! String
    self.navigationController?.pushViewController(vc, animated: true)
}

}

3 个答案:

答案 0 :(得分:0)

这必须是tableView的高度 在ViewDidLoad放置此行

确认我的想法
self.tableView.frame = CGRect(x: self.tableView.frame.origin.x, y: self.tableView.frame.origin.y, width: self.tableView.frame.size.width, height: self.view.frame.size.height - self.tableView.frame.origin.y)

这将使tableView结尾的高度在self.view内不在其外

这个想法是检查tableView所有它出现在它的容器中,给tableView背景一个不同的颜色看看更好

答案 1 :(得分:0)

我不明白你的问题 加载完成后,tableview不会自动滚动到底部 OR
在上拉时不能滚动到底部?

注意:如果您为uitableview设置了约束,则无法为其设置名声。但如果你想这样做,试试:

yourView.translatesAutoresizingMaskIntoConstraints = true

答案 2 :(得分:0)

确保将User Interaction Enabled设置为true

相关问题