View Switcher(3)~コンテントビューの実装

2010. 09. 01
続いてSwitchViewControllerで切り替えるコンテントビュー、即ちBlueViewControllerとYellowViewControllerを実装します。


●ヘッダファイルの編集

BlueViewController.hとYellowViewController.hに、アラート表示用ボタンのアクションを定義します。
(太字が追加した部分)

#import <UIKit/UIKit.h>

@interface BlueViewController : UIViewController {

}
- (IBAction)blueButtonPressed:(id)sender;

@end

755

#import <UIKit/UIKit.h>

@interface YellowViewController : UIViewController {

}
- (IBAction)yellowButtonPressed:(id)sender;

@end

756


●nibファイルの編集

本書やサンプル内容にはありませんが、コンテントビューがそのままでは味気ないので画像を追加してみます。

757

まずResources下のBlueView.xibをダブルクリックしてInterface Builderで編集します。

DocumentウィンドウでViewを選択してInspectorウィンドウのSizeタブを見ると、自動生成されるビューはサイズも位置もグレイアウトされていて変更できません。

758

しかし、LibraryウィンドウからDocumentウィンドウにViewをドラッグ&ドロップすると、サイズは変更できるものの、位置が変な所に固定されてしまいます。

759

これを回避するために、デフォルトで生成されているビューのサブビューとしてビューを追加し、Documentウィンドウで順序を入れ替えるという方法をとってみました。

まずLibraryウィンドウからViewウィンドウにViewをドラッグ&ドロップします。

760

するとDocumentウィンドウでは、デフォルトのViewのサブビューとして追加されます。

761

サブビューをドラッグ&ドロップでFirstResponderの下に移動します。

762

自動生成されたビューは不要になるので、選択してdeleteキーで削除します。

ビューの入れ替えが済みましたら、InspectorウィンドウのSizeタブで、高さを416ピクセル(ステータスバーとツールバーの分を除いた高さ)に変更します。

763

次にDocumentウィンドウでFile's Ownerを選択し、InspectorウィンドウのIdentityタブで『Class Identity』の『Class』を『BlueViewController』に変更します。

764

Attributesタブで外観を設定します。

背景色は、『View』の『Background』で左側の白い四角をクリックし、ColorsウィンドウでBlueを選択します。

『Drawing』のOpaque、Clear Context Before Drawing、Autoresize Subviewsのチェックは外します。

765

アラートを表示するためのボタンを設置します。

LibraryウィンドウからRound Rect ButtonをViewウィンドウにドラッグ&ドロップし、タイトルを入力します。

このボタンのタイトルや後述するアラートの内容などは、ボタンをタップした時にどちらのビューであるかをアラートで示すだけなので、どちらのビューかを判別できれば何でも構いません。

『View』の『Drawing』のClear Context Before Drawing、Autoresize Subviewsのチェックは外しておきます。

766

サンプルコードのままでは物足りない方は、画像を足してみても良いでしょう。

767

最後にDocumentウィンドウでFile's Ownerを選択し、InspectorウィンドウのConnectionsタブで、『Outlets』の『view』をビューに、『Received Actions』の『blueButtonPressed:』をボタンに接続してTouch Up Insideを選択します。

768

YellowView.xibも同様に作成します。

769


●アラートの実装

コンテントビューのボタンがタップされた際に出るアラートを、BlueViewController.mとYellowViewController.mに実装します。
(太字が追加・修正した部分)

#import "BlueViewController.h"

@implementation BlueViewController

- (IBAction)blueButtonPressed:(id)sender {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"ちひゃー"
        message:@"歌うことが大好きなぷちどる。「ばいんばいん」な子は、ちょっぴり苦手だ。"
        delegate:nil
        cancelButtonTitle:@"くっ"
        otherButtonTitles:nil];
    [alert show];
    [alert release];
}

// The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
    // Custom initialization
    }
    return self;
}

(コメントアウトしているメソッドは略)

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

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

@end

770

#import "YellowViewController.h"

@implementation YellowViewController

- (IBAction)yellowButtonPressed:(id)sender {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"こあみ&こまみ"
        message:@"世にもめずらしい双子のぷちどる。事務所に嵐を呼ぶトラブルメーカーズ。"
        delegate:nil
        cancelButtonTitle:@"とかー"
        otherButtonTitles:@"ちー", nil];
    [alert show];
    [alert release];
}

// The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
    // Custom initialization
    }
    return self;
}

(コメントアウトしているメソッドは略)

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

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

@end

771

initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles:、showメソッドなどアラートに関しては『メモ帳の作成(6)~アラート』を参照してください。

yellowButtonPressed:メソッドにおいて、本来キャンセルボタンの他にボタンがある場合は、デリゲートを導入してボタンインデックスで分岐し、処理をする必要があるのですが、ここでは割愛しています。


●実行結果

アプリケーションを起動すると青い画面が表示されます。

772_.jpg

ビュー上部の『ちひゃー』ボタンをタップするとアラートが表示されます。

773

メッセージが中央揃えなのが少し気になりますが、変更できるものではないので我慢します。

『くっ』ボタンをタップするとアラートが閉じます。

ツールバーの『Switch Views』ボタンをタップすると、黄色い画面に切り替わります。

774

『こあみ&こまみ』ボタンをタップすると、アラートが表示されます。

775

『とかー』がキャンセルボタン、『ちー』がその他のボタンですが、前述の通りデリゲートやボタンインデックスの設定をしていないので、どちらをタップしても何もせずにアラートが閉じます。



参考文献

はじめてのiPhone3プログラミングはじめてのiPhone3プログラミング
(2009/12/17)
Dave Mark、Jeff LaMarche 他

商品詳細を見る






bose_soundlink_revolve
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
03 | 2017/04 | 05
Sun Mon Tue Wed Thu Fri Sat
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

bose_soundlink_revolve
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR