Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 一个视图控制器中有两个表视图,一个表视图未显示_Ios_Arrays_Swift_Uitableview - Fatal编程技术网

Ios 一个视图控制器中有两个表视图,一个表视图未显示

Ios 一个视图控制器中有两个表视图,一个表视图未显示,ios,arrays,swift,uitableview,Ios,Arrays,Swift,Uitableview,我在一个ViewController中有两个TableViews,只能填充一个表。我已在视图控制器中为这两个表创建了插座。这是我的viewDidLoad override func viewDidLoad() { super.viewDidLoad() pickerTableView.delegate = self pickerTableView.dataSource = self tableView.delegate = self tableV

我在一个
ViewController
中有两个
TableView
s,只能填充一个表。我已在视图控制器中为这两个表创建了插座。这是我的
viewDidLoad

    override func viewDidLoad() {
    super.viewDidLoad()
    pickerTableView.delegate = self
    pickerTableView.dataSource = self

    tableView.delegate = self
    tableView.dataSource = self
    tableView.tableFooterView = UIView()

    pickerTableView.reloadData()
    tableView.reloadData()

}
似乎唯一读取的表是
self.tableView
,而
UITableView
的协议中从未读取
pickerTableView

extension MealViewController: UITableViewDelegate, UITableViewDataSource {

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    if tableView == self.tableView {
        let nameHeaderView = NameHeaderView(frame: CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 40))
        nameHeaderView.delegate = self
        nameHeaderView.sectionIndex = section
        nameHeaderView.nameButton.setTitle(Data.userModels[section].name, for: .normal)
        return nameHeaderView
    } else {
        return nil
    }
}
func numberOfSections(in tableView: UITableView) -> Int {
    if tableView == self.tableView {
        return Data.userModels.count
    } else {
        return 0
    }
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if tableView == self.tableView {
        if Data.userModels[section].isExpandable {
            return Data.userModels[section].itemModels.count
        } else {
            return 0
        }
    } else if tableView == pickerTableView {
        return Data.userModels.count
    }
    else {
        return 0
    }
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    if tableView == self.tableView {
        let cell = tableView.dequeueReusableCell(withIdentifier: "nameCells", for: indexPath) as! MealTableViewCell
        cell.setup(itemModel: Data.userModels[indexPath.section].itemModels[indexPath.row])
        return cell

    } else if tableView == pickerTableView {
        let cell2 = tableView.dequeueReusableCell(withIdentifier: "pickerCells", for: indexPath) as! NamePickerTableViewCell
        cell2.setup(userModel: Data.userModels[indexPath.row])
        print(Data.userModels)
        return cell2
    }
    else {
        return UITableViewCell()
    }
}
}

我还对每个
tableView
应用了约束,因此它们都出现在屏幕上。当我运行应用程序时,会显示
self.tableView
的数据,但是
pickerTableView
显示为空
self.tableView
需要节,而
pickerTableView
不需要节,这可能是个问题吗?
data.userModels
数组中也有数据

以下是我的
UITableViewCell
类,仅供参考:

class NamePickerTableViewCell: UITableViewCell {

@IBOutlet weak var namePickerLabel: UILabel!

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
}

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

func setup(userModel: UserModel) {
    namePickerLabel.text = userModel.name
}
}


谢谢你的帮助

如果在pickerTableView中不需要任何节,那么它也必须至少有一个节

因此,当
tableview==self时,在方法
numberOfSections
中返回1
。pickerTableView

func numberOfSections(in tableView: UITableView) -> Int {
    if tableView == self.tableView {
        return Data.userModels.count
    } else {
        return 1
    }
}