根据手机方向更改UITableViews

时间:2013-07-30 20:52:30

标签: ios cocoa-touch uitableview landscape-portrait

我有一个UITableViewController,它是名为LoginTableViewController的应用程序的初始控制器。

我想为纵向模式显示一个UITableView,为横向模式显示另一个

目前我为横向模式设置了另一个UITableViewControllerLoginTableViewController_L)。我在UITableView中的格局UITableViewController中声明了LoginTableViewController,希望我可以根据方向切换UITableViews。旋转手机后,我只得到一个黑色/空白屏幕,标题栏位于顶部。

有没有更好的方法来解决这个问题?

@property (strong, nonatomic) IBOutlet UITableView *LoginTableView;
@property (strong, nonatomic) IBOutlet UITableView *LoginTableView_Landscape;

1 个答案:

答案 0 :(得分:1)

使用单个TableView。

如果你想要一个完全不同的外观(不只是调整相同的单元格)

检测设备方向并根据当前方向加载不同的单元格。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation];

    if (UIInterfaceOrientationIsPortrait(interfaceOrientation)) {

        PortraitCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil)
        {
            cell = [[PortraitCell alloc]init];
        }

    } else {

        LandscapeCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil)
        {
            cell = [[LandscapeCell alloc]init];
        }
    }

    return cell;
}

当设备方向改变时,请致电

[myTableView reloadData];

* PsudoCode显示概念。