我试图从我的前任的旧 Objective-C 代码中理解,但我对这个问题感到很困惑。
我们有一个DashboardView
类,以及一个DashboardViewController
更新前者的类。DashboardView
类有UITableView *m_data_tbl
显示有问题的数据。
在-(void)connectionDidFinishLoading
上DashboardViewController
,它调用[m_dashboard_view setNeedsLayout]
,其中m_dashboard_view
是 的成员变量DashboardViewController
。
setNeedsLayout
ofDashboardView
的实现如下:
- (void) setNeedsLayout {
[self populateHeaderScrollView];
[self populateData];
[m_data_tbl reloadData];
}
其中前两个函数填充数据和标题滚动。
问题是在第一次执行时,只显示了一部分数据。即,最后两列(滚动时最右边)根本不显示。无法滚动显示最后两列。当用户从纵向旋转到横向时,最后两列是否会出现。
不用说,以下是 的didRotateFromInterfaceOrientation
实现DashboardController
:
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
/* animation codes are omitted */
if(UIDeviceOrientationIsLandscape) {
[m_dashboard_view adjustForType:0];
}
else {
[m_dashboard_view adjustForType:1];
}
adjustForType
实现为:
-(void)adjustForType:(NSInteger)type
{
if(type == 0)
{
m_data_tbl.frame = CGRectMake
m_hdr_scroll.frame = CGRectMake
}
else
{
m_data_tbl.frame = CGRectMake
m_hdr_scroll.frame = CGRectMake
}
[m_data_tbl reloadData];
}
在纵向中,帧大小与最初初始化的帧大小相同,并且加载的数据在执行期间不会改变;只是最后两列是否显示不同。
没有做过太多的 iPhone 开发,这个问题让我很困惑。