2010/08/04

[Objective-C][iPad]NavigationBarにボタンを表示する

現在、24を見ながらiPadのアプリを制作中なのですが、そんな中、今日は、Navigation Barにアイテムボタンを出力する方法について書きたいと思います。というか、またつらつらとソースを紹介するだけなのですが。

//sqliteBrowserAppDelegate.h

#import <UIKit/UIKit.h>
#import "MainNavigationController.h"
#import "MainViewController.h"

@interface sqliteBrowserAppDelegate
: NSObject {
UIWindow *window;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;

@end

//sqliteBrowserAppDelegate.m
#import "sqliteBrowserAppDelegate.h"

@implementation sqliteBrowserAppDelegate

@synthesize window;

#pragma mark -
#pragma mark Application lifecycle

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

MainViewController *mainviewcontroller = [[MainViewController alloc] initWithNibName:nil bundle:nil];
MainNavigationController *mainnavigationcontroller = [[MainNavigationController alloc]
initWithRootViewController:mainviewcontroller
];

[window addSubview:mainnavigationcontroller.view];
[window makeKeyAndVisible];

return YES;
}

//MainNavigationController.h
#import <UIKit/UIKit.h>
#import "MainViewController.h"

@interface MainNavigationController : UINavigationController {

}

@end

//MainNavigationController.m
#import "MainNavigationController.h"

@implementation MainNavigationController

- (id)initWithRootViewController:(UIViewController *)rootViewController{
if ((self = [super initWithRootViewController:rootViewController])) {

}
return self;
}

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


- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}


- (void)viewDidUnload {
[super viewDidUnload];
}


- (void)dealloc {
[super dealloc];
}

@end

//MainViewController.h
#import <UIKit/UIKit.h>

@interface MainViewController : UIViewController {

}

-(void)openPopover:(id)sender;
@end

//MainViewController.m
#import "MainViewController.h"

@implementation MainViewController

-(void)openPopover:(id)sender{
NSLog(@"クリックされました。");
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {

if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {

UIBarButtonItem *menubutton = [[UIBarButtonItem alloc] initWithTitle:@"Menu"
style:UIBarButtonItemStyleBordered target:self action:@selector(openPopover:)];
menubutton.width = (CGFloat)150;
self.navigationItem.leftBarButtonItem = menubutton;

}

return self;
}

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


- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}


- (void)viewDidUnload {
[super viewDidUnload];
}


- (void)dealloc {
[super dealloc];
}


@end

そんでもって、実行結果はこちら
Photobucket
ポイントとしては、UIViewController(ここでは、MainViewController)の初期化時に、UIBarButtonItemクラスをコールして、ボタンを作るところ。

最初、UINavigationControllerのクラス内でUIBarButtonItemをコールしても全然、うまくいかず、泥沼にはまっていたのですが、仕様書を読んで、なんとかクリアーできました。

後は、このボタンを押した後に、Popoverを出力できたらいいなと。

0 コメント:

コメントを投稿