【问题标题】:Swift dynamic tableview in UIViewControllerUIViewController 中的 Swift 动态表格视图
【发布时间】:2016-04-02 06:55:15
【问题描述】:

我一直试图在我的 ViewController 中添加一个表格视图,不幸的是我的表格视图中没有显示任何数据。 numberOfSectionsInTableViewnumberOfRowsInSectioncellForRowAtIndexPath 甚至没有被调用。我在 ViewController 中尝试了 tableview ,因为下面还有其他控件,如 label 、 text field's 和 TableView .由于这些标签和文本字段,我无法使用 TableViewController。我做了什么...

  1. 创建了一个 UIViewController 并添加了标签、文本字段等控件。
  2. 我从对象库中将一个 TableView 拖到我的 UIViewController 中。
  3. 为了从服务器管理我的数据,我创建了一个模型

     class Model {
    
    var name : String
    var email : String
    
    init?(name : String , email : String)
    {
        self.name = name
        self.email = email
    } }
    
  4. 因为我有动态数据,对于单元格,我在 UITableViewCell 子类下创建了一个名为 userinfoCell 的快速文件并连接了我的标签(TableViewCell 内的两个标签一个用于用户名,另一个用于电子邮件)到这个类(userinfoCell)。

  5. 最后,在我的 UIViewController 中,我添加了以下代码来填充我的表格视图。

在我的类定义中,我已经初始化了一个像这样的全局变量

var model = [Model]()

我创建了一个向我的模型添加数据的函数

 func loadMembers()
    {

        let member1 = Model(name: "Caprese Salad", email: "caprreswe@gmail.com")!

        let member2 = Model(name: "Capresed", email: "pepperoni@gmail.com")!



        model += [member1, member2]

    }

我在 ViewDidLoad 上调用了这个函数

 override func viewDidLoad() {
    super.viewDidLoad()

        loadMembers()
    }



override func numberOfSectionsInTableView(tableView: UITableView) -> Int 
    {
       return 1
    }

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

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCellWithIdentifier("Members", forIndexPath: indexPath) as! userinfoCell

        let member = model[indexPath.row]


        cell.MemberName.text = member.name
        cell.MemberEmail.text = member.email


        return cell
    }

但是我得到了一个空表视图。我的方法出了什么问题

如何在 UIViewController 中实现动态 UITableView ???

【问题讨论】:

  • tableview的datasource和delegate你设置了吗?

标签: ios swift uitableview uiviewcontroller xcode7.2


【解决方案1】:

保持控制并从 tableview 拖动到视图控制器,并像这样设置数据源和委托...

【讨论】:

    【解决方案2】:

    Ctrl 从表格视图拖到视图控制器并设置数据源和委托

    然后在loadMember()中调用self.tableView.reloadData()

    【讨论】:

      【解决方案3】:

      像这样修改你的 loadMembers 方法,

      func loadMembers()
      {
          let member1 = Model(name: "Caprese Salad", email: "caprreswe@gmail.com")!
      
          let member2 = Model(name: "Capresed", email: "pepperoni@gmail.com")!
      
          model += [member1, member2]
      
          // reload the table view after modifying the data source.
          self.tableView.reloadData()   
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多