1

というUITableViewControllerアプリケーションの初期コントローラである がありますLoginTableViewController

ポートレート モード用とランドスケープ モードUITableView用に1 つずつ表示したいと思います。

現在、ランドスケープ モード用に別のUITableViewController( LoginTableViewController_L) をセットアップしています。向きによって切り替わればいいなと思ってUITableView横から宣言しました。電話を回転させた後、タイトルバーが上にある黒い/空白の画面が表示されます。UITableViewControllerLoginTableViewControllerUITableViews

これにアプローチするより良い方法はありますか?

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

1 に答える 1

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。

于 2013-07-30T22:07:34.483 に答える