我只是試圖子類UIWindow,以便我可以攔截一些通知。隨着下面列出的代碼,我也進入MainWindow.xib並更新UIWindow對象到我的子類。它加載正常,問題是我的標籤欄上的選項卡沒有響應(在下面的例子中,我只添加了一個選項卡,但在我的應用程序中我有多個(這不是問題))。任何人都可以看到我可能做錯了什麼?謝謝。子類化UIWindow
UISubclassedWindow.h
#import <UIKit/UIKit.h>
@interface UISubclassedWindow : UIWindow
{
}
@end
UISubclassedWindow.m
#import "UISubclassedWindow.h"
@implementation UISubclassedWindow
- (id) initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
NSLog(@"init");
}
return self;
}
- (void)makeKeyAndVisible
{
[super makeKeyAndVisible];
NSLog(@"makeKeyAndVisible");
}
- (void)becomeKeyWindow
{
[super becomeKeyWindow];
NSLog(@"becomeKeyWindow");
}
- (void)makeKeyWindow
{
[super makeKeyWindow];
NSLog(@"makekeyWindow");
}
- (void)sendEvent:(UIEvent *)event
{
}
- (void)dealloc
{
[super dealloc];
}
@end
AppDelegate.h
進口
@class UISubclassedWindow;
@interface My_AppAppDelegate : NSObject <UIApplicationDelegate>
{
UISubclassedWindow *window;
}
@property (nonatomic, retain) IBOutlet UISubclassedWindow *window;
@end
AppDelegate.m
@synthesize window;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UITabBarController *tabBarController = [[UITabBarController alloc] init];
MainViewController *mainViewController = [[MainViewController alloc] initWithViewType: 0];
UINavigationController *mainNavigationController = [[UINavigationController alloc] initWithRootViewController: mainViewController];
mainNavigationController.title = @"Main";
[[mainNavigationController navigationBar] setBarStyle: UIBarStyleBlack];
[tabBarController setViewControllers: [NSArray arrayWithObjects: mainNavigationController, nil]];
[self.window setRootViewController: tabBarController];
[self.window makeKeyAndVisible];
[mainViewController release];
[mainNavigationController release];
[tabBarController release];
return YES;
}
也許是個愚蠢的問題,但是你在xib中設置了主窗口的類嗎? – mvds 2012-01-13 01:10:50
但你爲什麼要這樣?如果你放置正確的自動識別模板,那麼你的視圖將會與不斷變化的導航欄完美對齊。有一個合理的原因是它在景觀上略微縮小。 – mvds 2012-01-13 01:14:02
@mvds - 對你的第一個評論,根本不是一個愚蠢的問題,因爲它是正確的。現在我已經將窗口設置爲mainwindow.xib中的子類(並且還將關鍵字outlet添加到了屬性中),並且當它加載它時會激發我的NSLog消息,但現在應用程序被凍結。 – 2012-01-13 01:18:50