SWRevealViewController 单元格显示为空白,直到单击
SWRevealViewController Cells show up blank until click
我正在使用 SWRevealViewController,当我创建单元格和 运行 应用程序时,侧面菜单显示为空白。但是,一旦您单击其中一个单元格,该单元格就会出现。但是,当您单击它时,顶部较大的单元格仍然不会出现。这是我的代码。
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return menuTitle.count+3
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let index = indexPath.row
var defCell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as UITableViewCell
switch (index) {
case 0:
let cell = tableView.dequeueReusableCell(withIdentifier: "profileCell") as! profileCell
cell.nameLbl.text = "Name Here" //need to pull name from the database here
cell.profileImg.image = UIImage(named: "face")! //pull from db
print(cell)
return cell
case 1:
let cell = tableView.dequeueReusableCell(withIdentifier: "labelCell") as! labelCell
cell.menuLabel.text = "For Sale"
return cell
case 2,3,4:
let cell = tableView.dequeueReusableCell(withIdentifier: "titleCells") as! titleCells
cell.cellImg.image = iconImg[indexPath.row - 2]
cell.cellName.text! = menuTitle[indexPath.row - 2]
return cell
case 5:
let cell = tableView.dequeueReusableCell(withIdentifier: "labelCell") as! labelCell
cell.menuLabel.text = "Profile"
//labelCell.darkLine //cahnge line color to orange
return cell
case 6,7,8,9,10,11:
print(indexPath.row)
let cell = tableView.dequeueReusableCell(withIdentifier: "titleCells") as! titleCells
cell.cellImg.image = iconImg[indexPath.row - 3]
cell.cellName.text! = menuTitle[indexPath.row - 3]
print(menuTitle[indexPath.row - 3])
return cell
case 12:
//change line color
let cell = tableView.dequeueReusableCell(withIdentifier: "titleCells") as! titleCells
cell.cellImg.image = iconImg[indexPath.row - 3]
cell.cellName.text! = menuTitle[indexPath.row - 3]
return cell
case 13:
let cell = tableView.dequeueReusableCell(withIdentifier: "titleCells") as! titleCells
cell.cellImg.image = iconImg[indexPath.row - 3]
cell.cellName.text! = menuTitle[indexPath.row - 3]
return cell
default:
return defCell
}
除了 switch 语句之外的任何提示或不同方法都会有所帮助。提前致谢。
问题是,当您进入任何 switch case 并出列 cell
时,已经有另一个单元在 defCell
中出列。我过去遇到过麻烦。我不知道为什么,但出于某种原因,它弄乱了 tableView。解决它的一种方法是做这样的事情
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.row == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: "profileCell") as! profileCell
cell.nameLbl.text = "Name Here" //need to pull name from the database here
cell.profileImg.image = UIImage(named: "face")! //pull from db
print(cell)
return cell
} else if indexPath.row == 1 || indexPath.row == 5 {
let cell = tableView.dequeueReusableCell(withIdentifier: "labelCell") as! labelCell
if indexPath.row == 1 {
cell.menuLabel.text = "For Sale"
} else {
cell.menuLabel.text = "Profile"
}
return cell
} else {
let cell = tableView.dequeueReusableCell(withIdentifier: "titleCells") as! titleCells
if indexPath.row <= 4 {
cell.cellImg.image = iconImg[indexPath.row - 2]
cell.cellName.text! = menuTitle[indexPath.row - 2]
} else {
cell.cellImg.image = iconImg[indexPath.row - 3]
cell.cellName.text! = menuTitle[indexPath.row - 3]
}
return cell
}
}
如您所见,使用这种方法,一次出队的信元永远不会超过一个
我正在使用 SWRevealViewController,当我创建单元格和 运行 应用程序时,侧面菜单显示为空白。但是,一旦您单击其中一个单元格,该单元格就会出现。但是,当您单击它时,顶部较大的单元格仍然不会出现。这是我的代码。
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return menuTitle.count+3
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let index = indexPath.row
var defCell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as UITableViewCell
switch (index) {
case 0:
let cell = tableView.dequeueReusableCell(withIdentifier: "profileCell") as! profileCell
cell.nameLbl.text = "Name Here" //need to pull name from the database here
cell.profileImg.image = UIImage(named: "face")! //pull from db
print(cell)
return cell
case 1:
let cell = tableView.dequeueReusableCell(withIdentifier: "labelCell") as! labelCell
cell.menuLabel.text = "For Sale"
return cell
case 2,3,4:
let cell = tableView.dequeueReusableCell(withIdentifier: "titleCells") as! titleCells
cell.cellImg.image = iconImg[indexPath.row - 2]
cell.cellName.text! = menuTitle[indexPath.row - 2]
return cell
case 5:
let cell = tableView.dequeueReusableCell(withIdentifier: "labelCell") as! labelCell
cell.menuLabel.text = "Profile"
//labelCell.darkLine //cahnge line color to orange
return cell
case 6,7,8,9,10,11:
print(indexPath.row)
let cell = tableView.dequeueReusableCell(withIdentifier: "titleCells") as! titleCells
cell.cellImg.image = iconImg[indexPath.row - 3]
cell.cellName.text! = menuTitle[indexPath.row - 3]
print(menuTitle[indexPath.row - 3])
return cell
case 12:
//change line color
let cell = tableView.dequeueReusableCell(withIdentifier: "titleCells") as! titleCells
cell.cellImg.image = iconImg[indexPath.row - 3]
cell.cellName.text! = menuTitle[indexPath.row - 3]
return cell
case 13:
let cell = tableView.dequeueReusableCell(withIdentifier: "titleCells") as! titleCells
cell.cellImg.image = iconImg[indexPath.row - 3]
cell.cellName.text! = menuTitle[indexPath.row - 3]
return cell
default:
return defCell
}
除了 switch 语句之外的任何提示或不同方法都会有所帮助。提前致谢。
问题是,当您进入任何 switch case 并出列 cell
时,已经有另一个单元在 defCell
中出列。我过去遇到过麻烦。我不知道为什么,但出于某种原因,它弄乱了 tableView。解决它的一种方法是做这样的事情
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.row == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: "profileCell") as! profileCell
cell.nameLbl.text = "Name Here" //need to pull name from the database here
cell.profileImg.image = UIImage(named: "face")! //pull from db
print(cell)
return cell
} else if indexPath.row == 1 || indexPath.row == 5 {
let cell = tableView.dequeueReusableCell(withIdentifier: "labelCell") as! labelCell
if indexPath.row == 1 {
cell.menuLabel.text = "For Sale"
} else {
cell.menuLabel.text = "Profile"
}
return cell
} else {
let cell = tableView.dequeueReusableCell(withIdentifier: "titleCells") as! titleCells
if indexPath.row <= 4 {
cell.cellImg.image = iconImg[indexPath.row - 2]
cell.cellName.text! = menuTitle[indexPath.row - 2]
} else {
cell.cellImg.image = iconImg[indexPath.row - 3]
cell.cellName.text! = menuTitle[indexPath.row - 3]
}
return cell
}
}
如您所见,使用这种方法,一次出队的信元永远不会超过一个