【问题标题】:Insert cell in tableview in swift快速在表格视图中插入单元格
【发布时间】:2017-06-07 15:51:49
【问题描述】:

我目前正在快速开发一个应用程序,并制作一个从屏幕右侧滚动并显示可能性列表的菜单栏。

我在我的故事板上创建了 UITableView 作为我粘贴在导航控制器上的视图。

我现在想将单元格添加到此 tableview 以创建导航栏,但我不知道该怎么做,因为没有控制器管理项目 menuView。 这是我的 ViewControllerClass:

import CoreData

class ViewController: UIViewController {

@IBOutlet weak var menuView: UITableView!

var menuShowing = false
@IBOutlet weak var leadingConstraint: NSLayoutConstraint!

override func viewDidLoad() {
    super.viewDidLoad()

    menuView.layer.shadowOpacity = 1
    menuView.layer.shadowRadius = 6

}

@IBAction func openMenu(_ sender: Any) {
    if (menuShowing)
    {
        leadingConstraint.constant = -200
        UIView.animate(withDuration:  0.3, animations: {self.view.layoutIfNeeded()})
    } else {
        leadingConstraint.constant = 0
        UIView.animate(withDuration:  0.3, animations: {self.view.layoutIfNeeded()})
    }
    menuShowing  = !menuShowing
}
}

我的问题是: 我的 menuView 对象做得好还是我应该重新考虑我以前的工作?

我可以在 menuView 对象中添加一个单元格,只需使用一个简单的函数,例如: MenuView.addRow(* something *)?

【问题讨论】:

    标签: ios swift uitableview tableview tableviewcell


    【解决方案1】:

    你可以设置 UITableViewDataSource 和如果你想 UITableViewDelegate 到 ViewController 使 tableView 被 ViewController 控制。

    import CoreData
    
    class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    
     @IBOutlet weak var menuView: UITableView!
    
    var menuShowing = false
    @IBOutlet weak var leadingConstraint: NSLayoutConstraint!
    
    override func viewDidLoad() {
    super.viewDidLoad()
    
    
    menuView.layer.shadowOpacity = 1
    menuView.layer.shadowRadius = 6
    menuView.dataSource = self
    menuView.delegate = self
    
     }
    
    // Handle TableView like you normally do:
    
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 1
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        return UITableViewCell()
    }
    
     @IBAction func openMenu(_ sender: Any) {
    if (menuShowing)
    {
        leadingConstraint.constant = -200
        UIView.animate(withDuration:  0.3, animations: {self.view.layoutIfNeeded()})
    } else {
        leadingConstraint.constant = 0
        UIView.animate(withDuration:  0.3, animations: {self.view.layoutIfNeeded()})
    }
    menuShowing  = !menuShowing
     }
       }
    

    【讨论】: