Noobie 所以请多多包涵。
我一直在关注 O'Rielyy Learning iPhone Programming 和这里的各种线程来构建我的第一个 iPhone 应用程序。到目前为止一切顺利,但项目结束的最后一个绊脚石是让应用程序自动旋转(仅使用 uiwebviews 的测试版因不自动旋转而被拒绝)
我有邮件应用程序委托,它添加了一个 UITabBarController
// myNewsUKDelegate.h
@interface myNewsUKDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> {
UIWindow *window;
UITabBarController *tabBarController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
@end
// myNewsUKDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Add the tab bar controller's view to the window and display.
[self.window addSubview:tabBarController.view];
[self.window makeKeyAndVisible];
return YES;
}
tabBarController 有 .h 和 .m 文件 - 我在 IB 中添加了所有 UINavigationControllers,然后又添加了一个 UITableView
请参阅http://flatearth.co.uk/nib.png上的图片(太菜鸟,无法在问题中发布图片!)
从我的阅读中,我了解到问题是我添加到主视图的 UITabBarController 需要“子类化”并添加此代码。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
具有 .h 和 .m 文件的下一个视图向下/进入/子类化(无论正确的术语是什么)是添加表格视图的 FirstViewController,这已经设置了 shouldAutorotateToInterfaceOrientation。
@interface FirstViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> {
UITableView *tableView;
NSArray *userList;
}
@property (nonatomic, retain) IBOutlet UITableView *tableView;
@property (nonatomic, retain) NSArray *userList;
@end
@implementation FirstViewController
@synthesize tableView;
- (void)viewDidLoad {
[super viewDidLoad];
// I tried adding
self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
// lots of other code ; )
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
所以问题似乎是当 [self.window addSubview:tabBarController.view]; 添加标签栏它不添加 shouldAutorotateToInterfaceOrientation 返回 YES 位。
看来我需要添加一个 tabBarController 子类,其中包含 shouldAutorotateToInterfaceOrientation 。所以我按照互联网上的建议阅读并尝试了这个......
// tabBarController.h
#import <UIKit/UIKit.h>
@interface tabBarController : UITabBarController {
}
@end
// tabBarController.m
#import "tabBarController.h"
@implementation tabBarController
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
@end
并添加
#import "tabBarController.h"
到 myNewsUKDelegate.m
但这失败了“错误:访问未知的'view'类方法”
[self.window addSubview:tabBarController.view];
myNewsUKDelegate.m 中的行
进一步的搜索并没有产生任何有用的东西,我最近的 Xcode 知识现在已经枯竭:( 任何帮助表示赞赏。