2017-02-27 248 views
1

我是新来的swift和ios开发的一般。我在tableview中显示json。由于某些原因,tableview不滚动到底部(3个单元格)。 这里是我的UITableView的代码的实现代码如下所在:Tableview不滚动到底部

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) 
} 

}

+0

检查与_uitableview_ –

回答

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背景不同的颜色更好看

+0

1.5行的自动布局不滚动 –

+0

什么是1.5究竟 –

+0

是的tableView中self.view或它的另一个视图 –

0

我不明白你的问题
的tableview不自动滚动到下当负载完成 或
拉起时不能滚动到底部?

注意:如果您为uitableview设置了禁忌,则无法为其设置名气。但如果你想做到这一点,请尝试:

yourView.translatesAutoresizingMaskIntoConstraints = true 
+0

无法滚动到最后3行 –

+0

检查:在可视视图的故事板和约束条件下的底部条 –