>

설정 화면이 있는데정적 UITableView 에 바닥 글을 추가하고 싶습니다  앱의 버전 번호가 포함되어 있습니다 :

SO에 대한 많은 게시물을 읽었으며 그 중 대다수는 Objective-C로 보이거나 UITableView 에 바닥 글을 추가하는 것 같습니다.   tableView(_:titleForHeaderInSection:) 를 사용한 동적 컨텐츠  다른 사람. 한 가지 질문 에 대한 답변을 찾았습니다. 간단히 UITableView.tableFooterView 를 사용하는 것이 좋습니다  이 속성도 시도했지만 위의 이미지와 같이 아무것도 표시되지 않습니다.

내가 한 일 :

override func viewDidLoad() {
    super.viewDidLoad()
    setUpView()
  }
  func setUpView() {
    self.navigationController?.navigationBar.topItem?.title = "Settings"
    navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(self.dismissSettings(_:)))
    formulasTitle.textColor = UIColor.black
    liftsTitle.textColor = UIColor.black
    roundNumbersTitle.textColor = UIColor.black
    sendFeedbackTitle.textColor = UIColor.black
    unitsTitle.textColor = UIColor.black
    pleaseRateTitle.textColor = UIColor.black
    legalMumboJumboTitle.textColor = UIColor.black
    currentFormulaSelection.detailTextLabel!.text = settingsViewModel.defaultFormulaName
    currentLiftsSelection.detailTextLabel!.text = settingsViewModel.defaultLiftName
    weightUnitControl.selectedSegmentIndex = settingsViewModel.weightUnitSelectedSegmentIndex
    roundNumbersSwitch.isOn = settingsViewModel.roundNumbersSwitchOn
    roundNumbersSwitch.addTarget(self, action: #selector(self.roundingOptionDidChange), for: .valueChanged)
    weightUnitControl.addTarget(self, action: #selector(weightUnitDidChange), for: .valueChanged)
    let versionLabel = UILabel()
    versionLabel.text = getVersion()
    let footer = UITableViewHeaderFooterView()
    tableView.tableFooterView = footer
  }
  func getVersion() -> String {
    let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") ?? "0"
    let appBuild = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") ?? "0"
    let versionLabelText: String
    versionLabelText = "Version \(appVersion) (\(appBuild))"
    return versionLabelText
   }

tableView.tableFooterView 를 사용하고 있습니다  올바른 해결책으로 방금 잘못하고 있거나 다른 방법으로 바닥 글을 추가합니까?

편집 # 1

타 라스의 답변에 따라 이것을 추가했지만 여전히 아무것도 없습니다 :

override func viewDidLoad() {
    super.viewDidLoad()
    let versionLabel = UILabel()
    versionLabel.text = getVersion()
    let footer = UITableViewHeaderFooterView(reuseIdentifier: "footer")
    tableView.tableFooterView = footer
    tableView.register(UITableViewHeaderFooterView.self, forHeaderFooterViewReuseIdentifier: "footer")
    footer.frame = CGRect(x: 50, y: 10, width: 100, height: 100)
    footer.contentView.addSubview(versionLabel)
    footer.backgroundView?.backgroundColor = UIColor.green
    footer.constrainToSuperView()
  }
extension UIView {
  func constrainToSuperView() {
    guard let superview = superview else {
      return
    }
    translatesAutoresizingMaskIntoConstraints = false
    topAnchor.constraint(equalTo: superview.topAnchor).isActive = true
    bottomAnchor.constraint(equalTo: superview.bottomAnchor).isActive = true
    leadingAnchor.constraint(equalTo: superview.leadingAnchor).isActive = true
    trailingAnchor.constraint(equalTo: superview.trailingAnchor).isActive = true
  }
}

두 가지 이상한 점 : 런타임에 footer 의 프레임   (50.0, 535.333333333333, 375.0, 100.0) 입니다 . 또한이 작업을 수행하면 버전 번호가있는 레이블이 표시되지만 왼쪽으로 정렬되어 중앙에 위치 할 수 없습니다.

footer.textLabel?.text = versionLabel.text

  • 답변 # 1

    let footer = UITableViewHeaderFooterView()
    tableView.tableFooterView = footer
    
    
    이 두 줄에서 프레임이없는 빈 바닥 글을 만들었습니다. 다음 사용을 시도하십시오 :

    let footer = UIView(frame: CGRect(x:0, y:0, width: UIScreen.main.bound.width, height: 100))
    footer.backgroundColor = UIColor.red
    tableView.tableFooterView = footer
    
    

  • 이전 cakephp 3x의 템플릿에 엔티티 필드의 최대 길이를 표시합니다
  • 다음 ruby on rails - AccessorMethodName과 Style/AccessorMethodName의 차이점