私は、カスタムnibファイルでUITableViewCellのサブクラスをやっています。カスタムUITableViewCell:SIGABRT on "loadNibNamed:"
サブクラスの名前はMyCustomCellです。 .xibファイルにはただ1つのUILabel "cellTitle"を持つUITableViewCellがあり、それをUITableViewCellサブクラスのコンセントに接続しました。セルを返しMyCustomCellでクラスで
、私は次の行にSIGABRTエラーを取得:
NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:NULL];
ここcellForRowAtIndexPathの実装です:ここで
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *kCustomCellID = @"MyCellID";
myCustomCell *cell = (myCustomCell *)[tableView dequeueReusableCellWithIdentifier:kCustomCellID];
if (cell == nil)
{
cell = (myCustomCell *)[myCustomCell cellFromNibNamed:@"myCustomCell"];
}
//TODO: Configure Cell
return cell;
}
はmyCustomCell cellFromNibNamedの実装です:
+ (myCustomCell *)cellFromNibNamed:(NSString *)nibName
{
NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:NULL];
NSEnumerator *nibEnumerator = [nibContents objectEnumerator];
myCustomCell *customCell = nil;
NSObject* nibItem = nil;
while ((nibItem = [nibEnumerator nextObject]) != nil)
{
if ([nibItem isKindOfClass:[myCustomCell class]])
{
customCell = (myCustomCell *)nibItem;
break; // we have a winner
}
}
return customCell;
}
私はSIGABRTエラーをライン
NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:NULL];
上記の方法では、私はここで間違って何をしていますか?
あなたがself.theFreshlyLoadedCustomCellThingSetUpInIBによって何を意味するかに対処することはできますか?私が見た例では、人々はペン先の内容を反復するか、単にobjectAtIndex:0を使用します。なぜなら、そこに何も置かれていないはずの場所を想定しているからです。 – Ascendant
もちろん、テーブルビューのセルを指している自己のクラス(ビューコントローラ?)にコンセントを設定してください。セルをロードすると、NSBundleコードはそのコンセントをセルに設定します。 –