ScrollView中的TableView问题

时间:2017-01-23 04:39:05

标签: ios iphone swift uitableview

我跟随你们的有用评论并且目前已经走到了这一步:我有一个带有标题单元格的TableView。现在的问题是我只能显示一组数据而且TableView当前不会滚动(可能是因为只显示了一组数据。)

这是我的代码:

的ViewController:



    struct TableData {

        var section: String = ""
        
        var data = Array<String>()
        
        var dataS = Array<String>()
        
        init(){}

    }

    var data = Array<TableData>()
    var dataS = Array<TableData>()

    class MyCustomCell: UITableViewCell {

        @IBOutlet var label: UILabel!
        
        @IBOutlet var labelS: UILabel!
        
    }

    class MyCustomHeader: UITableViewCell {

        @IBOutlet var header: UILabel!
        
    }

    class TypeViewController: BaseViewController , UITableViewDelegate, UITableViewDataSource {
        
        @IBOutlet var tableView: UITableView!
        
        @IBOutlet var scrollView: UIScrollView!

        public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
            return data[section].data.count
        
        }
        
        public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        
            let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! MyCustomCell
            
            cell.label.text = data[indexPath.section].data[indexPath.row]
            cell.labelS.text = dataS[indexPath.section].data[indexPath.row]
            
            return cell

           
        }
        
        func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
            
            let  headerCell = tableView.dequeueReusableCell(withIdentifier: "Header") as! MyCustomHeader
            
            headerCell.header.text = data[section].section
            
            return headerCell

        }
        
        func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
            return 50.0
        }
        
        
        
        override func viewDidLoad() {
            super.viewDidLoad()
            addSlideMenuButton()
            addItems()
            
            print(data)
            
        }

        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
        
func addItems() {

        var new_elements:TableData

        new_elements = TableData()
        new_elements.section = "Stuff"
        new_elements.data.append(obj41);
        new_elements.data.append(obj42);
        new_elements.data.append(obj43);
        new_elements.data.append(obj44);
        new_elements.data.append(obj45);
        new_elements.data.append(obj46);
        new_elements.data.append(obj47);
        
        data.append(new_elements)
        
        new_elements = TableData()
        new_elements.section = "More Stuff"
        new_elements.data.append(obj51);
        new_elements.data.append(obj52);
        new_elements.data.append(obj53);
        new_elements.data.append(obj54);
        new_elements.data.append(obj55);
        new_elements.data.append(obj56);
        new_elements.data.append(obj57);
        
        data.append(new_elements)
        
        new_elements = TableData()
        new_elements.section = "Netzach - Eternity"
        new_elements.data.append(obj61);
        new_elements.data.append(obj62);
        new_elements.data.append(obj63);
        new_elements.data.append(obj64);
        new_elements.data.append(obj65);
        new_elements.data.append(obj66);
        new_elements.data.append(obj67);
        
        data.append(new_elements)
        
        //Break
        
        new_elements = TableData()
        new_elements.data.append(objS0);
        new_elements.data.append(objS1);
        new_elements.data.append(objS2);
        new_elements.data.append(objS3);
        new_elements.data.append(objS4);
        new_elements.data.append(objS5);
        new_elements.data.append(objS6);
        new_elements.data.append(objS7);
        
        dataS.append(new_elements)
        
        new_elements = TableData()
        new_elements.data.append(objS11);
        new_elements.data.append(objS12);
        new_elements.data.append(objS13);
        new_elements.data.append(objS14);
        new_elements.data.append(objS15);
        new_elements.data.append(objS16);
        new_elements.data.append(objS17);
        
        dataS.append(new_elements)
        
        new_elements = TableData()
        new_elements.data.append(objS21);
        new_elements.data.append(objS22);
        new_elements.data.append(objS23);
        new_elements.data.append(objS24);
        new_elements.data.append(objS25);
        new_elements.data.append(objS26);
        new_elements.data.append(objS27);
        
        dataS.append(new_elements)
}
&#13;
&#13;
&#13;

附上了MainStoryboard的一些照片:

enter image description here

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:2)

请注意以下与UITableView

相关的要点
  1. UITableView继承了UIScrollView的属性,即UITableView也低于UIScrollView,因此您无需UIScrollView特别滚动UITableView。如果你这样做会表现得很奇怪。

  2. cellForRow中,您正在使用参数tableView创建条件typeView&amp; typeView1通过比较不是标准格式的标记。因为tableView.tag可能会更改并导致错误的输出。因此,请尝试使用以下格式

    if tableView == typeView { } else { } //tableView == typeView1

    UITableView个对象与pram tableView进行比较。

  3. cellForRow方法会从cell返回if-else,因此您无需撰写

  4. return UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "Cell")

    如果我调试你的cellForRow方法代码,那么上面这行就永远不会执行。

    首先尝试此标准并删除您的错误,然后发布您面临的问题和问题。

    希望我的上述工作可以帮助你。

      

    修改

    您需要的输出将如下图所示。您不需要在单UItableView中使用2 tableviewscrollview。您可以使用一个tableView执行相同操作。

    enter image description here

    完成此tutorial