【问题标题】:Custom TableView and Header自定义 TableView 和标题
【发布时间】:2017-01-31 04:15:44
【问题描述】:

我有一个带有标题单元格的自定义 TableView。问题是我只能显示一组数据,而 TableView 目前不会滚动(可能是因为只显示一组数据。)这是在 Swift 3 中。

这是我的代码:

视图控制器:

  

  

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
        }
        
        func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        
        print(indexPath.row)
        
        var element: TableData
        
        element = TableData()
        
        element.data.append(data[indexPath.section].data[indexPath.row]);
        
        wordData.append(element)
        
        element = TableData()
        
        element.data.append(dataS[indexPath.section].dataS[indexPath.row]);
        
        wordDataS.append(element)
        
        if wordData[indexPath.section].data.count == 3 {
            
            performSegue(withIdentifier: "segueFind", sender: self)
            
        }
        
    }
        
        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 = "Gevurah - Judgement"
        new_elements.data.append(obj1);
        new_elements.data.append(obj2);
        new_elements.data.append(obj3);
        new_elements.data.append(obj4);
        new_elements.data.append(obj5);
        new_elements.data.append(obj6);
        new_elements.data.append(obj7);
        
        data.append(new_elements)
        
        new_elements = TableData()
        new_elements.section = "Hod - Reverberation"
        new_elements.data.append(obj11);
        new_elements.data.append(obj12);
        new_elements.data.append(obj13);
        new_elements.data.append(obj14);
        new_elements.data.append(obj15);
        new_elements.data.append(obj16);
        new_elements.data.append(obj17);
        
        data.append(new_elements)
        
        new_elements = TableData()
        new_elements.section = "Tiferet - Beauty"
        new_elements.data.append(obj21);
        new_elements.data.append(obj22);
        new_elements.data.append(obj23);
        new_elements.data.append(obj24);
        new_elements.data.append(obj25);
        new_elements.data.append(obj26);
        new_elements.data.append(obj27);
        
        data.append(new_elements)

 new_elements = TableData()
        new_elements.section = "Gevurah - Judgement"
        new_elements.dataS.append(objS1);
        new_elements.dataS.append(objS2);
        new_elements.dataS.append(objS3);
        new_elements.dataS.append(objS4);
        new_elements.dataS.append(objS5);
        new_elements.dataS.append(objS6);
        new_elements.dataS.append(objS7);
        
        dataS.append(new_elements)
        
        new_elements = TableData()
        new_elements.section = "Hod - Reverberation"
        new_elements.dataS.append(objS11);
        new_elements.dataS.append(objS12);
        new_elements.dataS.append(objS13);
        new_elements.dataS.append(objS14);
        new_elements.dataS.append(objS15);
        new_elements.dataS.append(objS16);
        new_elements.dataS.append(objS17);
        
        dataS.append(new_elements)
        
        new_elements = TableData()
        new_elements.section = "Tiferet - Beauty"
        new_elements.dataS.append(objS21);
        new_elements.dataS.append(objS22);
        new_elements.dataS.append(objS23);
        new_elements.dataS.append(objS24);
        new_elements.dataS.append(objS25);
        new_elements.dataS.append(objS26);
        new_elements.dataS.append(objS27);
      
        dataS.append(new_elements)

}

另外,我在这一行得到一个超出范围的索引错误:

element.data.append(dataS[indexPath.section].dataS[indexPath.row]);

附上一些主线故事板的照片:

https://i.stack.imgur.com/Yvw7I.png

i.stack.imgur.com/nLWZJ.png

https://i.stack.imgur.com/ralOb.png

【问题讨论】:

  • 为您的输出屏幕添加屏幕截图。
  • 好的,我明天会尝试这样做,基本上一个节标题显示有 7 行,下面有文本
  • 好的。是否显示另一部分?
  • 不,只显示一个节标题及其行。但我认为 anupam 的回答可能会解决问题
  • 我遇到的另一个问题是在 didSelectRowAtPath 中。我无法将 DataS 中的值添加到 WordData

标签: ios swift scroll tableview


【解决方案1】:

在你的班级中添加一些代码部分,它肯定会起作用。

public func numberOfSections(in tableView: UITableView) -> Int
{
    return dummyArray.count
}

【讨论】:

  • 非常感谢您的回答 Anupam。我明天会试试这个,如果它有效,请发表评论
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多