0

我试图从我的前任的旧 Objective-C 代码中理解,但我对这个问题感到很困惑。

我们有一个DashboardView类,以及一个DashboardViewController更新前者的类。DashboardView类有UITableView *m_data_tbl显示有问题的数据。

-(void)connectionDidFinishLoadingDashboardViewController,它调用[m_dashboard_view setNeedsLayout],其中m_dashboard_view是 的成员变量DashboardViewController

setNeedsLayoutofDashboardView的实现如下:

- (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 开发,这个问题让我很困惑。

4

0 回答 0