初心者のiOS7自習室1
Androidでカスタムセルを作る要領でTableViewを!
IBOutlet、UINibを使う作り方です。※なお、内容は、2014年の1月現在、iOS7&xcode5のものです。
これはstoryboardでセルをマスター登録するものではなく、完全に分離したカスタムセルクラスを作り、storyboard内に取り込んだtableViewに出していく方法。
(android)xmlのカスタムセルをtableViewに組込む
(iOS)xibのカスタムセルをtableViewに組込む
というイメージです。
【用意するもの】
・カスタムセルのクラス
・器になるViewControllerクラス
ViewControllerがAndroidでいうところのActivityであることに気づくまで、相当難儀してしまった。
カスタムセル.hの内容
#import
@interface カスタムセルクラス名 : UITableViewCell
@property(nonatomic, retain) IBOutlet UILabel *ラベル名;
@end
このラベル名の前にあるIBOutletというのは、xib上でUI部品を配置したことで生成しましたという説明。
xibのUI部品をソース上で取り扱えるようにしていくには、xibのドキュメントのようなアイコンの下にあるIdentity and Typeにnameを設定することや→マークの下にあるOutletsに出ている部品名横の丸上をホバーしたときに現れる+マークから、xib上の部品に向かってドラッグするという方法で結びつける。
カスタムセルクラス名.mの内容
#import "カスタムセルクラス名.h"
@implementation カスタムセルクラス名
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end
上記のように作ったセルをデータと結びつけて、テーブルに出力する。
組込みたいクラス名.hの内容
#import
@interface 組込みたいクラス名 : UITableViewController
@end
組込みたいクラス名.mの内容
#import “カスタムセル名.h” の記述箇所
- (void)viewDidLoad
{
[super viewDidLoad];
UINib *nib = [UINib nibWithNibName:@“カスタムセル名" bundle:nil];
[self.tableView registerNib:nib forCellReuseIdentifier:@"カスタムセル名"];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSArray *データ名 = [[NSArray alloc]initWithObjects:@"サンプルデータ",@“サンプルデータ2",nil];
static NSString *CellIdentifier = @“カスタムセル名";
カスタムセルクラス名 *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.カスタムセルクラス(hで定義したもの)でつけた部品名.text = データ名:NSArrayのStringデータを指定しました[indexPath.row-1];
if(indexPath.row%2==0){
cell.backgroundColor = [UIColor lightGrayColor];
}
}
return cell;
}
これで出ます。
バージョンによって違うのか、これだけのことにものすごく難儀しました。
row-1になっているのは、if文で0番目は固定の見出しを付けてしまったので、データの0番目と差異が出たためです。
その下の偶数セルには着色の部分でも気づく通り、番地の指定を計算するときに括弧つけたり、余計な配慮はいらないようです。
初心者のiOS7自習室2へ進む? ⇒ もちろんGO!