表视图显示空单元格

时间:2015-09-23 01:07:18

标签: ios swift uitableview uilabel

我有2个部分,第一部分有1行,第二部分有4行。我可以在故事板中看到开关,标签和文本字段。它在模拟器中加载空白。我已检查所有IBOutlets是否已连接。

以下是我在Table View Controller中的代码

import UIKit

class InfoTableViewController: UITableViewController {

var sectionArray: NSMutableArray = ["Social Security Benefits", "Demographics"]
var socialArray: NSMutableArray = ["Estimate Social Security Benefits"]
var demoArray: NSMutableArray = ["Name:", "DOB:", "Age of Retirement:", "Years of Retirement"]
override func viewDidLoad() {
    super.viewDidLoad()
}

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

// MARK: - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    // #warning Potentially incomplete method implementation.
    // Return the number of sections.
    return self.sectionArray.count
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if section == 0{
        return socialArray.count
    } else {
        return demoArray.count
    }
}


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    if indexPath.section == 0 {
        if indexPath.row == 0 {
            println(indexPath.section)
            println(indexPath.row)
            let cell: SocialTableCell = SocialTableCell(style: UITableViewCellStyle.Default, reuseIdentifier: "social")
            cell.social?.text = "Estimate"
            cell.toggle?.setOn(false, animated: true)

            return cell
        }
    } else if indexPath.section == 1 {
        if indexPath.row == 0 {
            println(indexPath.section)
            println(indexPath.row)
            let cell: NameTableCell = NameTableCell(style: UITableViewCellStyle.Default, reuseIdentifier: "name")
            return cell
        }else if indexPath.row == 1{
            println(indexPath.section)
            println(indexPath.row)
            let cell: DOBTableCell = DOBTableCell(style: UITableViewCellStyle.Default, reuseIdentifier: "DOB")
        }else if indexPath.row == 2{
            println(indexPath.section)
            println(indexPath.row)
            let cell: RetirementTableCell = RetirementTableCell(style: UITableViewCellStyle.Default, reuseIdentifier: "AgeOfRetirement")
        }else if indexPath.row == 3{
            println(indexPath.section)
            println(indexPath.row)
            let cell: YearsRetirementTableCell = YearsRetirementTableCell(style: UITableViewCellStyle.Default, reuseIdentifier: "YearsOfRetirement")
        }

    }


    return UITableViewCell()


    //cell.configureFlatCellWithColor(UIColor.greenSeaColor(), selectedColor: UIColor.cloudsColor(), roundingCorners: UIRectCorner())


}
}

我还为每个单元格创建了5个表视图单元格类。我还检查了所有标识符,它们是正确的。

以下是我的故事板的图片

enter image description here

但是当我运行它时,模拟器只显示部分并且单元格为空。

enter image description here

任何帮助都将受到高度赞赏。 感谢

3 个答案:

答案 0 :(得分:1)

您可以使用静态单元格来完成此操作。

  1. 转到表格视图=>属性检查器=>在内容选择静态单元格,然后在部分,放2(因为你有2个部分)
  2. enter image description here

    1. 然后点击Storyboad Hierarchy中的一个部分=>属性检查器=>在每个部分中放入你想要的行数(放1,因为你在第1部分有一行)。再选择其他部分并放入你想要的行数(放4,因为你在第2部分有4行)
    2. enter image description here

      1. 然后单击每个行单元格并添加Label并输入您的标签名称。并且您也可以为巡回赛第一部分设置切换按钮。

      2. 创建一个新的cocoa touch类: - 该类看起来像这样(你应该评论或删除这些函数,

            // MARK: - Table view data source
        
         /*
             override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
              // #warning Potentially incomplete method implementation.
             // Return the number of sections.
                return 1
              }        
        
              override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
              // #warning Incomplete method implementation.
             // Return the number of rows in the section.
                return 2
              }
           */
        
          /*
              override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
               let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath) as! UITableViewCell
        
               // Configure the cell...
        
                 return cell
              }
         */
        
      3. 最后Table类看起来像这样,

             import UIKit
        
               class TableViewController: UITableViewController {
        
                 override func viewDidLoad() {
                  super.viewDidLoad()
        
                   // Uncomment the following line to preserve selection between presentations
                  // self.clearsSelectionOnViewWillAppear = false
        
                  // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
        
                   }  
        
                   override func didReceiveMemoryWarning() {
                     super.didReceiveMemoryWarning()
                     // Dispose of any resources that can be recreated.
                   }
        
                   override func viewWillAppear(animated: Bool) {
                   super.viewWillAppear(animated)
        
                   }
               }
        

答案 1 :(得分:0)

这就是visit foo_path expect(page).to have_selector '.spinner' expect(page).to_not have_selector '.spinner' 应该是这样的。以下是第一部分第一行的示例,您可以相应地对齐所有其他部分。

作为旁注,注意到除了第一部分第一行之外,对于所有其他表行,您没有设置任何标签等,并且该控件最终会转到语句cellForRowAtIndexPath:,导致空单元格。请仔细检查一下。

return UITableViewCell()

答案 2 :(得分:0)

我有完全相同的问题,上面的评论都没有帮助我。我终于明白了,也许你遇到了同样的问题。

对我来说,我不小心在设计师中复制并粘贴了第二张桌面视图。第二个tableView位于第一个表格之上,但只有第一个表格视图连接到我的TableViewController,因此从未创建过运行时可见的单元格,因此为空白。

检查一下,希望这有帮助。

Double TableView