Search This Blog

Saturday, April 10, 2010

iPhone: In landscape-only, after first addSubview, UITableViewController doesn't rotate properly

Programmer Question

A minimal illustrative Xcode project for this is available on github.



On my UIWindow, when I add second (and subsequent) UITableView's as subviews, they do not rotate properly, and thus appear sideways. This is only tested in the Simulator. Here's a little code for you:



- (void)applicationDidFinishLaunching:(UIApplication *)application {
ShellTVC* viewA = [[ShellTVC alloc] initWithTitle:@"View A"];
ShellTVC* viewB = [[ShellTVC alloc] initWithTitle:@"View B"];

// The first subview added will rotate to landscape correctly.
// Any subsequent subview added will not.

// You may try this by various commentings and rearranging of these two statements.

[window addSubview:[viewA tableView]];
[window addSubview:[viewB tableView]];

[window makeKeyAndVisible];
}


viewB appears sideways. Comment out the addSubview for viewB, and viewA appears correctly. Do that for viewA only, and viewB appears correctly.



I am not creating these UITableViewControllers via NIBs, though the UIWindow is.



In case you are wondering, ShellTVC is-a UITableViewController, and implements this method:



- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}


Also, I have set the UIInterfaceOrientation in the plist file to UIInterfaceOrientationLandscapeLeft.



Probably related -- and unanswered -- SO questions here and here.



Find the answer here

No comments:

Post a Comment

Related Posts with Thumbnails