我想更改表视图的 rowHeight,同时更改方向 它在模拟器中工作,而不是在真实设备中工作

I wanted to change the rowHeight of the tableview, while changing orientation Its works in simulator not in Real Devices

提问人:Ganesh S 提问时间:8/4/2021 最后编辑:Ganesh S 更新时间:8/11/2021 访问量:49

问:

如果我改变手机的方向,我想改变tableview的rowHeight。它在模拟器中的工作,而不是在真实设备中 有人帮我解决这个问题 谢谢

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        if UIDevice.current.orientation.isLandscape{
            printer.isEnabled = true
            
            return 140
        }else{
            return 90
        }
       
    }
Swift iPhone UITableView

评论

0赞 Demented07 8/4/2021
您能否提供相关代码来向我们展示您到目前为止尝试过的内容。
0赞 Ganesh S 8/4/2021
@Demented07 我附上了我的代码 请给出任何建议

答:

0赞 Demented07 8/4/2021 #1

我相信问题出在你或你的身上,这两者都必须设置为当前视图控制器(表视图的视图控制器),它是处理触摸等事件并将数据放入表视图的行和部分。tableViewDelegatetableViewDataSourceDelegatedataSource

如果你没有使用 a,而是使用 a 并添加了 a 作为子视图,那么你需要做这两件事: (你可以把它放在你觉得最好的地方,或者其他任何你认为最好的地方,确保把它放在适当的视图控制器生命周期方法中,否则它将无法正确执行)。UITableViewControllerUIViewControllerUITableViewviewDidLoad()

    tableView.delegate = self
    tableView.dataSource = self

这样做的另一种方法是使用直接从界面构建器内部拖出的 (这已经有 和 连接到自身,因此您不必在代码中自己设置它。UITableViewControllerdelegatedataSourceTable View Controller Screenshot

您的代码适用于以下代码之一: (使用此方法还需要视图控制器继承,如下所示)。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
今天晚些时候,一旦我有空,我会最后一次尝试。如果您可以包含所有表视图方法(所有委托和数据源方法),这可能非常有用,谢谢。