提问人:Ganesh S 提问时间:8/4/2021 最后编辑:Ganesh S 更新时间:8/11/2021 访问量:49
我想更改表视图的 rowHeight,同时更改方向 它在模拟器中工作,而不是在真实设备中工作
I wanted to change the rowHeight of the tableview, while changing orientation Its works in simulator not in Real Devices
问:
如果我改变手机的方向,我想改变tableview的rowHeight。它在模拟器中的工作,而不是在真实设备中 有人帮我解决这个问题 谢谢
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if UIDevice.current.orientation.isLandscape{
printer.isEnabled = true
return 140
}else{
return 90
}
}
答:
0赞
Demented07
8/4/2021
#1
我相信问题出在你或你的身上,这两者都必须设置为当前视图控制器(表视图的视图控制器),它是处理触摸等事件并将数据放入表视图的行和部分。tableViewDelegate
tableViewDataSource
Delegate
dataSource
如果你没有使用 a,而是使用 a 并添加了 a 作为子视图,那么你需要做这两件事:
(你可以把它放在你觉得最好的地方,或者其他任何你认为最好的地方,确保把它放在适当的视图控制器生命周期方法中,否则它将无法正确执行)。UITableViewController
UIViewController
UITableView
viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
这样做的另一种方法是使用直接从界面构建器内部拖出的 (这已经有 和 连接到自身,因此您不必在代码中自己设置它。UITableViewController
delegate
dataSource
您的代码适用于以下代码之一:
(使用此方法还需要视图控制器继承,如下所示)。UITableViewController
class TableViewController: UITableViewController {
// Other data source methods such as cell for row at etc...
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if UIDevice.current.orientation.isLandscape{
print("row height: 140") // Test
return 140
} else {
print("row height: 90") // Test
return 90
}
}
}
评论
0赞
Demented07
8/4/2021
对不起,我完全忘记了你说过它在模拟中有效,但在物理设备上无效。我现在将在物理设备上对其进行测试,看看是否有任何问题,然后尝试找出可能导致它的原因。
0赞
Demented07
8/4/2021
好的,我已经在物理设备上测试了它,对我来说,它的工作原理与在 sim 上的工作原理相同,表格视图单元格的高度更改为指定数量。我不完全确定为什么它适用于您的SIM卡而不是您的设备。(也许使用 print 语句来确保它按您的预期工作)。希望您现在能够解决问题,如果没有,请回复评论。
0赞
Ganesh S
8/4/2021
谢谢你的建议。我正在使用该表作为子视图。我已经按照您的建议做了同样的事情,但它仍然无法在物理设备中工作。谢谢你的努力。
0赞
Demented07
8/4/2021
今天晚些时候,一旦我有空,我会最后一次尝试。如果您可以包含所有表视图方法(所有委托和数据源方法),这可能非常有用,谢谢。
评论