しむしむてるるの日記&雑談 同人誌の進捗やら仕事のあれこれやら書いています。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- --:-- ] スポンサー広告 | TB(-) | CM(-)

2つのTableViewを表示するViewControllerを作る

22日に注文したMacBookAirはまだ到着しません...
配達状況を確認してみると...
	海外荷物受付	07/22	17:56	上海支店(中国)
国内到着 07/23 16:25 ADSC支店
海外発送 07/25 09:30 上海支店(中国)
荷物受付 07/25 11:47 ADSC支店
発送 07/25 11:47 ADSC支店

なんか、経由が良く分からない事になってます。
一度、国内到着となってから海外発送とか...どんな動きをしてるんだい?
ま、それでもちゃんと発送になってるので、今日・明日には届く事でしょう。

そんな新型Airを待ちわびつつ、今回は少しApp開発してるよ~と言う事をアピールしておきたいと思います。

そんな今回の題材は『2つのTableViewを表示するViewControllerを作る』です。
一般的にTableViewとViewControllerの組み合わせでViewを作る場合は、
UITableViewControllerを使うのが簡単なのですが...
どうやらUITableViewControllerだとTableViewは1つだけ持つようで、2つのTableを並べる事が出来ませんでした。

そうなると、自前でTableViewを2つ持つViewControllerを作る方法を取る事になります。
ただ、手元の参考書では自前で作るのは面倒そうな事が書かれていました...
<引用 iPhoneプログラミングUIKit詳解リファレンス P282>
通常、テーブル表示を行うにはUITableViewを使い、
UITableViewのdataSourceプロパティとdelegateプロパティをそれぞれ設定し、
UITableViewDataSourceプロトコルとUITableViewDelegateプロトコルの
任意のメソッドをそれぞれ実装する必要がある。

う~ん、なんかこの文章を見ると難しそうな印象を受けます。

が、実際にやってみると、案外呆気なく出来てしまいました。
と言っても、単に表示させるだけで、編集とかは一切行えない状態なので、
その辺を実装すると、少し難しくなると思います。

とりあえず、今回は2つのテーブルを表示させる事だけを行いたいと思います。

まず、当たり前の事ですが、自前のUIViewControllerを作ります。
今回は VC_TaskManager と言う名前のクラスを作成します。

まずは宣言部分
#import 

// TableViewのために2つのプロトコルを追加
@interface VC_TaskManager : UIViewController<UITableViewDelegate,UITableViewDataSource> {
UITableView *taskTV;
UITableView *daytaskTV;
}

@end

ここでのポイントは、参考書通り2つのプロトコルを指定すること。
あとは、作る予定のTableViewをメンバに加えるだけです。

続いて、実装部(の一部)
#import "VC_TaskManager.h"

@implementation VC_TaskManager

- (void)viewDidLoad {
[super viewDidLoad];

self.navigationItem.title=@"Task Management";

taskTV = [[UITableView alloc]
initWithFrame:CGRectMake(0,0,160,self.view.frame.size.height)
style:UITableViewStylePlain];
taskTV.backgroundColor = [UIColor whiteColor];
taskTV.dataSource = self;
taskTV.delegate = self;
[self.view addSubview:taskTV];

daytaskTV = [[UITableView alloc]
initWithFrame:CGRectMake(160,0,160,self.view.frame.size.height)
style:UITableViewStylePlain];
daytaskTV.backgroundColor = [UIColor blueColor];
daytaskTV.dataSource = self;
daytaskTV.delegate = self;
[self.view addSubview:daytaskTV];
}

- (NSString *)tableView:(UITableView *)tableView
titleForHeaderInSection:(NSInteger)section {

if( tableView == taskTV ){
switch( section ){
case(0):
return @"タスク1";
break;
case(1):
return @"その他";
break;
}
}else{
switch( section ){
case(0):
return @"7/24";
break;
case(1):
return @"7/25";
break;
case(2):
return @"7/26";
break;
}
}

return nil;
}

@end

ポイントはviewDidLoadメソッドでUITableViewを作る事だけ。
それ以外の tableView: ○○: メソッドなどはUITableViewControllerでの実装を全く一緒です。
つまり、viewDidLoadにて任意のサイズで2つのUITableViewを作るだけで目標を達成してしまいました。
実際に表示させて結果がコレ。
2つのテーブル表示

1つポイントを上げるとすれば、2つのTableViewのdataSourceとdelegateの実装先を両方ともselfにしたので、
tableView: ○○: メソッドを実装する時に、どっちのtableViewに対する処理なのかを判別する必要がある事。
これは渡されるtableViewがどっちかを比較すれば良いので簡単ですね。

今後、テーブルの処理が複雑になる場合は、UITableViewを派生させたクラスを作って、それぞれで実装するのが良いのかな?
その時は、dataSourceとかの設定を daytaskTV.dataSource=daytaskTV とする事になると思います。
...実際にやってないので、それで動くのか分かりませんが...

とりあえず、今回はこれで終了。
またTOPIXが出来たら、簡単に紹介しようと思います。
多分、次はCoreDataの使い方あたりになるかと...

スポンサーサイト
[ 2011/07/26 11:31 ] 未分類 | TB(0) | CM(0)
FC2カウンター
カレンダー
06 | 2011/07 | 08
- - - - - 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
31 - - - - - -
Twitter@sweetsblast
過去ログ

2017年 08月 【1件】
2017年 06月 【3件】
2017年 05月 【3件】
2017年 04月 【3件】
2017年 03月 【5件】
2017年 01月 【1件】
2016年 09月 【2件】
2016年 04月 【2件】
2016年 03月 【2件】
2016年 01月 【5件】
2015年 12月 【3件】
2014年 05月 【1件】
2014年 04月 【1件】
2013年 12月 【1件】
2013年 03月 【4件】
2013年 02月 【3件】
2013年 01月 【1件】
2012年 12月 【3件】
2012年 11月 【4件】
2012年 10月 【2件】
2012年 09月 【4件】
2012年 08月 【2件】
2012年 07月 【3件】
2012年 06月 【11件】
2012年 05月 【11件】
2012年 04月 【9件】
2012年 03月 【15件】
2012年 02月 【17件】
2012年 01月 【5件】
2011年 12月 【14件】
2011年 11月 【11件】
2011年 10月 【19件】
2011年 09月 【10件】
2011年 08月 【4件】
2011年 07月 【11件】
2011年 06月 【4件】
2011年 05月 【1件】
2011年 04月 【17件】
2011年 03月 【29件】
2011年 02月 【24件】
2011年 01月 【30件】
2010年 12月 【30件】
2010年 11月 【22件】
2010年 10月 【26件】
2010年 09月 【27件】
2010年 08月 【30件】
2010年 07月 【27件】
2010年 06月 【24件】
2010年 05月 【7件】
2010年 04月 【6件】
2010年 03月 【3件】
2010年 02月 【6件】
2010年 01月 【8件】
2009年 12月 【8件】
2009年 11月 【5件】
2009年 10月 【7件】
2009年 09月 【18件】
2009年 08月 【22件】
2009年 07月 【14件】
2009年 06月 【16件】
2009年 05月 【28件】
2009年 04月 【25件】
2009年 03月 【5件】
2009年 01月 【2件】
2008年 12月 【1件】
2008年 11月 【2件】
2008年 10月 【3件】
2008年 09月 【6件】
2008年 08月 【3件】
2008年 07月 【2件】
2008年 06月 【2件】
2008年 05月 【3件】
2008年 04月 【4件】
2008年 03月 【11件】
2008年 02月 【12件】
2008年 01月 【7件】
2007年 12月 【8件】
2007年 11月 【5件】
2007年 10月 【8件】
2007年 09月 【6件】
2007年 08月 【15件】
2007年 07月 【10件】
2007年 06月 【14件】
2007年 05月 【12件】
2007年 04月 【10件】
2007年 03月 【7件】
2007年 02月 【19件】
2007年 01月 【18件】
2006年 12月 【25件】
2006年 11月 【27件】
2006年 10月 【19件】
2006年 09月 【26件】
2006年 08月 【12件】
2006年 07月 【5件】



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