- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在同一个 View Controller 中有两个 tableview,tableview1
和 tableview2
,两个 tableview 中的单元格高度是固定的,我还设置了 delegate
和 dataSource
,唯一的区别是当我进入 View Controller 时 tableview1
已经有数据,但是 tableview2
没有。
我的问题是我可以通过 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
设置 tableview1 的行高但是对于 tableview2
我必须设置viewDidLoad()
中的self.tableview2.rowHeight
,这是为什么呢?
编辑
代码
class MainViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView1: UITableView! // tag = 1
@IBOutlet weak var tableView2: UITableView! // tag = 2
var getDataViewController: GetDataViewController!
override func viewDidLoad() {
self.tableView1.delegate = self
self.tableView1.dataSource = self
self.tableView2.delegate = self
self.tableView2.dataSource = self
self.tableView2.rowHeight = 44 // work for tableView2
getDataViewController = storyboard!.instantiateViewController(withIdentifier: "getData") as! GetDataViewController
}
// ...
// Table View DataSource
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if tableView.tag == 1 {
return tableView1DataArray.count
}
else if tableView.tag == 2 {
return tableView2DataArray.count
}
}
// Table View Delegate
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if tableView.tag == 1 {
return 122 // work for tableView1
}
return 44 // not work for tableView2
}
}
我在其他 View Controller 中获取 tableView2 的数据:
class GetDataViewController: UIViewController {
var mainViewController: MainViewController!
// ...
@IBAction func ok(_ sender: UIButton) {
let index = IndexPath(row: tableView2.count, section: 0)
// ...
let data = SomeData()
tableView2DataArray.append(data)
DispatchQueue.main.async {
mainViewController.tableView2.inserRows(at: [index], with: .automatic)
}
}
}
最佳答案
rowHeight
属性和委托(delegate)方法tableView(_:heightForRowAt:)
的区别在于委托(delegate)方法会为每个单元格调用并且通常包含基本计算(当你有很多行时它可能会很昂贵)。在您的情况下,由于行高是固定的并且每个单元格都相同,因此最好对两个 UITableView
实例都使用 rowHeight
属性。
每当您重新加载 tableView/section(使用 reloadData()
或任何其他重新加载方法)时都会调用委托(delegate)方法,因此请确保在获取数据后调用它。
You may set the row height for cells if the delegate doesn’t implement the tableView(_:heightForRowAt:) method. The default value of rowHeight is UITableViewAutomaticDimension
[...]
There are performance implications to using tableView(:heightForRowAt:) instead of rowHeight. Every time a table view is displayed, it calls tableView(:heightForRowAt:) on the delegate for each of its rows
关于ios - 关于 heightForRowAt 和在 UITableView 中设置 rowHeight 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42642178/
问题是: 如果您有 20 个单元格并设置 tableView.rowHeight = 60,并且在 tableView 加载其数据后,其 contentSize 为 44*20=880 不是 20*6
我想实现与 Reminders (iOS 5) 相同的效果。表格行高会随着 TextView 高度的变化而动态变化。 假设我在 UITableViewCell 中使用 UITextView。我将在单元
我需要调整我的 UITableViewCell 尺寸。我通过更改 rowHeight.dimension 来完成它,但它不起作用。 class SobreViewController: UITable
我在为我的 tableview 设置 rowHeight 更改动画时遇到问题。动画在 iPad 3(第一代视网膜)上需要很长时间(大约 3 秒)。但是,如果我在 tableview 靠近列表的中到底部
我有一个 UITableViewCell 子类,它有两个可变高度的标签。 AFAIK,自动布局约束是正确的。第一次在表格中渲染单元格时它是正确的,但任何后续渲染都会被吹得太高。即使在父 View Co
我正在使用 SlickGrid控制如grouped example所示如果我将 rowHeight 选项设置为 200,那么网格也会使 slick-group 行变大。 这附近有什么吗?我试图手动调整
我想要一个单元格,其中 rowHeight 等于 UITableView 的高度。添加我添加新单元格,然后将 rowHeight 除以我拥有的单元格总数。 在我的 viewDidLoad 中设置默认高
我在我的元素中使用 aggrid,我想在我的行中实现一个自动调整大小的功能。意味着目前在我的每个单元格中都会有多个 div 元素。因此,如果我固定行的高度,如果我添加第三个 div,它就会隐藏或溢出。
我想在 JTable 中放置一个比给定的单元格宽度更长的字符串。如何动态设置 rowHeight 以便读取整个字符串?这是一个例子: import javax.swing.*; public clas
我正在 iOS 8 上构建基本表格 View 。我观看了关于自动调整单元格主题的 WWDC '14 视频,并试图重现该概念,但遇到了一些问题。在 viewDidLoad 上:我正在调用: //esti
我用来创建矩形的代码(至少在 iOS7 之前)是 CGRect rect = [cTableView frame]; rect.origin.y += [cTableView rowHeight];
我正在尝试使用以下代码将 tableView 中每一行的高度设置为相应单元格的高度: override func tableView(tableView: UITableView!, heightFo
我有一个很长的 Excel 数据库,它运行一个我最初没有创建的 VBA 宏(因此我不知道它是如何工作的)。问题是由于某种原因,VBA 宏缩小了某些行的高度,这使得其中包含的文本并不总是 100% 可见
我正在使用 XCode 6.3 在 iOS 8 中构建不同字体的 TableView。首先,根据我正在阅读的书,它说鉴于 iOS8,不需要对表格行的高度进行任何操作会为您处理好这一点,所以一旦我掌握了
我有一个带有动态单元格和不同部分的 UITableViewController。一旦 Controller 被调用,rowHeigths 就完美了。然后我移动到另一个 Controller (在另一个
我从 ui-grid 得到了这种奇怪的行为,如果我将 rowHeight 设置为自动,同一行中的每个单元格将具有不同的高度。每行中的一个单元格将包含多行数据,但显然 ui-grid 会因此而窒息。 (
我有一个包含五个静态单元格的 UITableView。我需要一个单元格的单元格高度自动调整到它的内容,这是一个 UILabel。 有什么办法可以用.. tableView.estimatedRowHe
有没有办法在 swift 中获取 UITableView 中每一行的行高?请帮忙。提前致谢。 最佳答案 swift 4: var height: CGFloat = 0 for cell in tab
我试图通过在 tableView 函数中调用 startAnimation() 来设置 tableViewCell 行的高度: func tableView(tableView: UITableVie
我有 UITableViewCell,其中多个组件充当行,由 UIView 中的 UILabel、UIView 和 UIStackView 的混合元素组成。 单元格内的每个组件都有高度限制。我希望通过
我是一名优秀的程序员,十分优秀!