スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリーをはてなブックマークに追加

[iOS]画面遷移クラスを作りたい

クラス型というのがあるということがわかり、もっと画面遷移が簡単になると思いこのタイトルになりました。

現在プロジェクトには
SampleAViewController
SampleBViewController
SampleCViewController

と、3つのソースがあります。
これらはUIViewControllerの継承クラスになっており、xibのみいじった状態になっています。
SampleA
SampleB
SampleC


この3つのコントローラをボタンで遷移させるようなプロジェクトを作成したいと考えています。
そのためのクラスとしてTransViewManager(NSObject継承)というクラスを作成しました。
このクラスに先程の3つのクラスをimportして、クラス型の配列を作成しています。
呼び出されたChangeViewクラスで動的にコントローラのインスタンスを生成し、root_view_controllerに指定したコントローラのビューに対して貼り付け、show_view_controllerのビューは取り除き新しいものに変えるようにしています。

以下はそのソースになります。
//ヘッダファイル
@interface TransViewManager : NSObject {
NSArray *class_array;
UIViewController *root_view_controller;
UIViewController *show_view_controller;
}
@property (nonatomic,retain) UIViewController *root_view_controller;
@property (nonatomic,retain) UIViewController *show_view_controller;

-(void)ChangeView:(NSString *)_class_name;
@end

//メソッドファイル
#import "TransViewManager.h"


@implementation TransViewManager
@synthesize root_view_controller;
@synthesize show_view_controller;

-(id)init{
[super init];
class_array = [NSArray arrayWithObjects:
SampleAViewController.class,
SampleBViewController.class,
SampleCViewController.class,
nil];
root_view_controller = nil;
show_view_controller = nil;
return self;
}
-(void)dealloc{
[super dealloc];
[class_array release];
root_view_controller = nil;
[root_view_controller release];
show_view_controller = nil;
[show_view_controller release];
}
-(void)ChangeView:(NSString *)_class_name{
UIViewController *tmp_controller;
//合致する名前のクラスを探す
for(int i=0;0<[class_array count];i++){
if([_class_name isEqualToString:NSStringFromClass([class_array objectAtIndex:i])]){
tmp_controller = [[[class_array objectAtIndex:i] alloc] init];
break;
}
}
if(root_view_controller){
if(show_view_controller){
[show_view_controller.view removeFromSuperview];
[show_view_controller release];
}
//現在表示されているViewControllerをここに保管する
show_view_controller = tmp_controller;
//root_view_controller上に張り替える形で切り替え
[root_view_controller.view addSubview:tmp_controller.view];
}
}
@end


ここで問題になっているのは動的に生成したビューに対して、デリゲートを通す方法です。
いまだこの方法が分からず詰まっております。
このエントリーをはてなブックマークに追加

コメントの投稿

非公開コメント

Translation


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
プロフィール

チーズくん

Author:チーズくん
個人的メモをただ羅列しています。
twitter:@cheese1038

バロメーター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。