我正在建立一个包含几个单元格的UITableView。当我按住一个单元格时,将显示一个菜单,我可以在单元格中添加注释/文本。 我要的是如果用户不插入任何注释,则不要显示注释标签的空白。但是,如果用户插入评论,则该标签将显示并显示整个插入的评论。 是否可以在不对单元格高度进行硬编码的情况下做到这一点?因为此应用程序将在多种设备上运行,并且屏幕各不相同。
我已经尝试在viewDidLoad中使用以下代码行使用自动布局:
questionsTableView.rowHeight = UITableView.automaticDimension
questionsTableView.estimatedRowHeight = 390
我还尝试过使用questionsTableView.beginUpdates
在标签上添加注释,并在将注释分配给标签后使用questionsTableView.endUpdates
,但仍然无法使用。
当用户运行应用程序时,如果用户添加任何评论,则无法扩展显示该单元格并显示标签:
这是我的代码:
class MainVC: UIViewController {
// Interface Links
@IBOutlet weak var questionsTableView: UITableView!
// Properties
var imagePicker: UIImagePickerController!
var firstCommentReceived = ""
var secondCommentReceived = ""
var images = [UIImage]()
override func viewDidLoad() {
super.viewDidLoad()
questionsTableView.rowHeight = UITableView.automaticDimension
questionsTableView.estimatedRowHeight = 390
}
}
extension MainVC: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 2
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "customCell", for: indexPath) as! MainCell
cell.delegate = self
cell.configCell()
if !firstCommentReceived.isEmpty{
cell.firstCommentLabel.text = firstCommentReceived
}
if !secondCommentReceived.isEmpty{
cell.secondCommentLabel.text = secondCommentReceived
}
if !images.isEmpty{
cell.selectedImageView.image = images[0]
}
return cell
}
// Set the height of each row from UITableView
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 390 // size of the maximum height of the cell if the user add comments and images. This size should be dynamic not hardcoded.
}
}
在这里,我用我的问题创建了一个GitHub小示例: https://github.com/tygruletz/sendDataFromCellToController
如果您正在阅读本文,谢谢!
答案 0 :(得分:1)
好吧,我查看了您的项目,发现您有布局问题^^“
1-您需要将单元格布局设置为从上到下的布局,我发现您错过了对单元格中最后一个元素(即图像)执行此操作的步骤
2-您需要找到要在其中使用的动态标签,例如注释1和2优先。
3-最后,我发现您将像元高度设置为静态,在您的情况下应为动态
//设置UITableView中每一行的高度
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension // in your app it was 390
}
如果要查看,请修改项目代码
祝你好运;)
答案 1 :(得分:1)