現在、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 |
そんでもって、実行結果はこちら
ポイントとしては、UIViewController(ここでは、MainViewController)の初期化時に、UIBarButtonItemクラスをコールして、ボタンを作るところ。
最初、UINavigationControllerのクラス内でUIBarButtonItemをコールしても全然、うまくいかず、泥沼にはまっていたのですが、仕様書を読んで、なんとかクリアーできました。
後は、このボタンを押した後に、Popoverを出力できたらいいなと。
0 コメント:
コメントを投稿