これがどのように行われたかを私は正しい方法で信じています。私がテストしたように、それはIpadとIphoneで動作します。uitableviewcellをクラス化して、独自のcustomCellsを作成する必要があります。
interfaceBuilderで開始... customCellと呼ばれる新しいUIViewcontrollerを作成(そこにいる間、xibのボランティア)customCellがuitableviewcellのサブクラスであることを確認してください
ここですべてのビューを消去し、1つのビューを作成して、個々のセルのサイズにします。そのビューをサブクラスcustomcellにします。他の2つのビューを作成します(最初のビューを複製します)。
接続インスペクターに移動し、これらのビューに接続できる2つのIBOutletを見つけます。
-backgroundView -SelectedBackground
複製したばかりの最後の2つのビューにこれらを接続し、それらについて心配しないでください。customCellを拡張する最初のビュー。ラベルとuitextfieldをその中に配置します。customCell.hに入り、ラベルとテキストフィールドを接続します。このビューの高さを75(各セルの高さ)に設定します。
customCell.mファイルで、コンストラクターが次のようになっていることを確認します。
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
self = [nibArray objectAtIndex:0];
}
return self;
}
次に、UITableViewcontrollerを作成し、このメソッドで次のようにcustomCellクラスを使用します。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
// lets use our customCell which has a label and textfield already installed for us
customCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
//cell = [[[customCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
NSArray *topLevelsObjects = [[NSBundle mainBundle] loadNibNamed:@"NewUserCustomCell" owner:nil options:nil];
for (id currentObject in topLevelsObjects){
if ([currentObject isKindOfClass:[UITableViewCell class]]){
cell = (customCell *) currentObject;
break;
}
}
NSUInteger row = [indexPath row];
switch (row) {
case 0:
{
cell.titleLabel.text = @"First Name"; //label we made (uitextfield also available now)
break;
}
}
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 75.0;
}