ios - 如何设置静态分组 TableView 单元格的宽度

标签 ios swift uitableview

我是 Xcode 和 Swift 开发的新手,我有一个关于带有静态分组单元格(在 iPad 上)的 UITableViewController 的问题。我想要一个自然的解决方案,使单元格宽度不像整个屏幕那么大。 我试过这个:

override func viewDidAppear(_ animated: Bool) {
        tableView.frame = CGRect(x: 175, y: 70, width: view.bounds.width-350, height: view.bounds.height)
}

问题是这看起来真的很讨厌,并且在顶部和底部的导航栏和标签栏变得棘手,但特别是不能正常工作,因为它设置在 viewDidAppear,所以当使用向后滑动时手势(如在“设置”中), View 仍会以全宽显示一秒钟。

你知道解决这个问题的其他方法吗?也许一些自动布局的东西,我不知道,我已经尝试了我所知道的一切......

任何帮助将不胜感激!谢谢!

Placing a tableview in a normal ViewController grouped isn't allowed by Xcode...

最佳答案

正如您所说,自动布局可能是可行的方法。如果您使用的是 Interface Builder,那么您可以在那里设置约束。那里有大量信息可以帮助解决这个问题。这是一个很好的起点:https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/WorkingwithConstraintsinInterfaceBuidler.html

您应该切换到使用常规 UIViewController并手动添加 UITableView作为 Root View 的 subview 。您还必须手动将 View Controller 设置为 TableView 的委托(delegate)和数据源。然后你就可以把表格 View 放在你喜欢的任何地方。不幸的是,您将无法使用静态单元格 - 但从长远来看,动态设置数据往往是更好的选择。

另一种方法可以实现你想要的并且仍然使用 UITableViewController是通过将其设置为 subview Controller ,但根据我的经验,这更加繁琐并且往往更具限制性。

如果您想像代码示例中那样手动设置框架,那么您应该在 viewDidLayoutSubviews 中执行此操作方法。

关于ios - 如何设置静态分组 TableView 单元格的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40475425/

相关文章:

android - Swift 4 等效于 Kotlin "anonymous class"表示法

ios - 没有兼容模式的 iPad 上的 iPhone 应用

ios - Swift macOS Firebase

ios - 我想要一个用于核心数据的通用 fetchedResultsController 来支持多个模型

swift ,UIKit : How can I diagnose EXC_BAD_INSTRUCTION in UIKit on tableView. PerformBatchUpdates()

ios - 在单击后退按钮时再次调用 searchBarTextDidBeginEditing 委托(delegate)方法

ios - 如何在单元格中设置 UILabel 相对于图像的位置

swift - 如何在给定 XCUITest 中的文本的情况下获取单元格的索引?

ios - AFNetworking 中适用于 iOS 应用程序崩溃的 AWS 分析

ios - UITableView 中缺少 UINavigationBar