Ios Tableview-标题重叠详细信息(Swift)

Ios Tableview-标题重叠详细信息(Swift),ios,swift,xcode,uitableview,Ios,Swift,Xcode,Uitableview,附上的图片说明了一切。是否有任何方法可以防止标题重叠,例如在达到其限制时自动移动到第二行?通过编程/通过界面生成器 备注:我正在从firebase数据库中检索名称。这是一个投票页面,标题是展位名称 TableView控制器 import UIKit import FirebaseDatabase var pitchData = [String]() var myIndex = 0 class PitchTableViewController: UITableViewController {

附上的图片说明了一切。是否有任何方法可以防止标题重叠,例如在达到其限制时自动移动到第二行?通过编程/通过界面生成器

备注:我正在从firebase数据库中检索名称。这是一个投票页面,标题是展位名称

TableView控制器

import UIKit
import FirebaseDatabase

var pitchData = [String]()
var myIndex = 0
class PitchTableViewController: UITableViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationController?.setNavigationBarHidden(false, animated: true)

        self.navigationController?.navigationBar.titleTextAttributes = [ NSAttributedStringKey.font: UIFont(name: "Gotham Rounded", size: 19)!]
        ref = Database.database().reference() //set the firebase reference
        // Retrieve the post and listen for changes
        databaseHandle = ref?.child("Afternoon13").queryOrdered(byChild: "BoothPosition").observe(.value, with: { (snapshot) in
            pitchData.removeAll()

            for child in snapshot.children {
                let snap = child as! DataSnapshot
                let key = snap.key


                pitchData.append(key)

            }
            self.tableView.reloadData()
        })
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // MARK: - Table view data source

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
        return pitchData.count
    }


    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
        cell.textLabel?.font = UIFont(name: "Gotham Rounded", size: 20)
        cell.detailTextLabel?.font = UIFont(name: "Gotham Rounded", size: 20)
        cell.textLabel?.text = pitchData[indexPath.row]

        switch (pitchData[indexPath.row]) {
        case "ARC - attract, retain and cultivate":
            let returnValue: Int = UserDefaults.standard.integer(forKey: "voting")
            if (returnValue == 1)
            {
                cell.detailTextLabel?.text = "Completed ✓"
                cell.detailTextLabel?.textColor = UIColor.green
                cell.isUserInteractionEnabled = false
            }
            else {
                cell.detailTextLabel?.text = "Vote ᐳ"
                cell.detailTextLabel?.textColor = UIColor.blue
            }
        case "Anytime RCs":
            let returnValue: Int = UserDefaults.standard.integer(forKey: "voting1")
            if (returnValue == 1)
            {
                cell.detailTextLabel?.text = "Completed ✓"
                cell.detailTextLabel?.textColor = UIColor.green
                cell.isUserInteractionEnabled = false
            }
            else {
                cell.detailTextLabel?.text = "Vote ᐳ"
                cell.detailTextLabel?.textColor = UIColor.blue
            }

您需要将行设置为0:

您可以直接从故事板进行设置:

也可以通过编程方式设置:

cell.textLabel?.numberOfLines = 0
cell.detailTextLabel?.numberOfLines = 0
希望这有帮助

编辑:TableView约束的演示 我在相邻的牢房里取了两个标签:

这是我对TableView的输出:

这首先是标签的约束:

这是标签2的限制条件:

是的,它对我有用,文本是多行的,没有文本剪切,请仔细检查你的约束

编辑以查看约束 选择标签,然后选择“显示尺寸检查器:

向下滚动可以看到给定的约束

编辑2 根据您的描述,您可以自动调整大小:

因此,您可以使用以下选项:

用于标签一

对于第二个标签:


由于您使用的是默认的
UITableViewCell
文本标签,这应该可以解决所有问题:

cell.textLabel.numberOfLines = 0;
cell.textLabel.lineBreakMode = .byWordWrapping;  

您将UILabel属性numberOfLines=0

  • 设置ui标签顶部、底部、前导、尾随约束
  • 添加UITableViewDelegate方法

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return UITableViewAutomaticDimension
    }
    
  • 还可以像这样设置投票限制

  • 选择投票按钮设置约束

  • 步骤设置顶部、底部、前导、尾随和固定宽度
  • 逐步设置垂直中心约束

  • 确保三件事:-

    • 标题标签具有单元格内容视图的底部、顶部和前导约束以及投票>的水平间距,投票>按钮具有所有约束,如顶部、底部前导约束和标题的水平间距
    • 标题标签已设置numberOfLines=0
    • 使用UITableViewAutomaticDimension在heightForRowAt中设置单元格的动态高度

      func tableView(_ tableView: UITableView, heightForRowAt 
      indexPath: IndexPath) -> CGFloat {
          return UITableViewAutomaticDimension
      } 
      
    让我们试试代码

    // in view did load:
    self.tableView.rowHeight = UITableViewAutomaticDimension
    
    // cell row at indexpath
    let reuseIdentifier = "cell"
            var cell:UITableViewCell? =
                tableView.dequeueReusableCell(withIdentifier: reuseIdentifier)
            if (cell == nil)
            {
                cell = UITableViewCell(style: .value1,
                                       reuseIdentifier: reuseIdentifier)
            }
    
            // your customize font, color... here
    
            cell!.textLabel?.numberOfLines = 0;
            cell!.detailTextLabel?.numberOfLines = 0;
    
            return cell!
    


    在tableview中,您使用了标签或文本字段。您是如何通过故事板或xib构建此视图的?哦,各位,让我添加我的代码。单元格/表格视图是动态的,因此所有操作都是通过xib/控制器完成的。我必须将此应用于详细文本标签吗?@Kinja是表格视图单元格中的每个标签。这将使文本分为两部分lines@Kinja您是否为标签提供了顶部、底部、前导和尾随约束?这会产生最佳效果。还可以显示您当前的约束,这将有助于我找到您。仅当两个标签的约束都已锁定时。你能为你自己这样做吗?我必须也将此应用于详细文本标签吗?如果你也希望详细文本标签有多行,那么是的。如果是这样,问题仍然存在。我的文本标签没有换行。现在看起来怎么样?我可以看到你的高度吗?在索引路径上?我如何设置我的投票>限制?@Kinja查看我的ans。这是一个可以切换到另一页的按钮OK,那有什么问题。。设置约束“顶部”、“底部”、“指向单元格内容视图”和标题标签的水平间距。确保已将标题标签“顶部”、“底部”和“指向单元格内容视图”设置为标题标签“顶部”、“底部”和“指向单元格内容视图”有关于如何执行约束的分步教程吗?很抱歉,我相对来说是个新手swift@Kinja请参阅“更新答案以获取设置按钮约束”步骤。很明显,它被锁定了,我可以设置它(即使我取消了“限制到边距”@Kinja有什么问题它对我有效尝试退出xcode并重新打开。你的投票按钮在哪里?哦,妈的,对不起,dixit,我可能说错了,它不是一个按钮,只是一个文本标签,可以转到下一页