Xcodeで遊ぶ

今日は昨日の続きで、同じようなプログラムのiPhone版を書いてみることにした。
といっても、Tutorialを見ながら、である。
delegateとかModel-View-Controllerとか、ちゃんと理解できるようになりたいな。ってか、ならんとな。

TodayNowプロジェクトの作成

Window-based Applicationとして作成する。
TodayNowAppDelegate.hは、こんな感じ。

#import <UIKit/UIKit.h>
@class	TodayNowViewController;
@interface TodayNowAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
	TodayNowViewController* todayNowViewController;
}

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

@end

そして、TodayNowAppDelegate.mは、こんな感じ。

#import "TodayNowAppDelegate.h"
#import "TodayNowViewController.h"

@implementation TodayNowAppDelegate

@synthesize window;
@synthesize todayNowViewController;

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

    // Override point for customization after application launch
	TodayNowViewController *aViewController = [[[TodayNowViewController alloc] 
		initWithNibName:@"TodayNowViewController"
		bundle:[NSBundle mainBundle]]autorelease];
	[self setTodayNowViewController:aViewController];
	
	UIView *controllersView = [todayNowViewController view];
	[window addSubview:controllersView];
    [window makeKeyAndVisible];
	return YES;
}


- (void)dealloc {
	[todayNowViewController release];
    [window release];
    [super dealloc];
}


@end

もう、チュートリアル丸写し。

Viewの作成

TodayNowViewController.xibには、UITextFieldとUIButtonを設置しておく。
その上で、TodayNowViewController.hは、こんな感じで。

#import <UIKit/UIKit.h>
@interface TodayNowViewController : UIViewController {
	UITextField *textField;
}
@property (nonatomic, retain) IBOutlet UITextField *textField;
-(IBAction)printTodayNow:(id)sender;
@end

そして、TodayNowViewController.mは、こんな感じ。

#import "TodayNowViewController.h"
@implementation TodayNowViewController
@synthesize textField;
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}
- (void)viewDidUnload {
    [super viewDidUnload];
 }
- (void)dealloc {
	[textField dealloc];
	[super dealloc];
}
-(IBAction) printTodayNow: (id)sender{
	NSDate *date = [[NSDate date]autorelease];
	NSString *now = [[[NSString alloc] initWithFormat: @"%@", [date description]] autorelease];
	[textField setText:now];
}
@end

なんていうか、AndroidでActivityにListenerを設定してOnClick()とか定義していくのとは、別の感覚だ。Xcode自体は初めてじゃないから、InterfaceBuilderでOutletとActionを繋いでいく作業も今さら驚かないけど、やっぱりこれは独特な環境だよな。

という感じで、ひとまず動くのが確認できたので、とても嬉しい。