0
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"CustomCell";
    CustomCell *cell = (CustomCell*) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];

    }

iOS 6シミュレーターで完全に動作しますが、iOS 5シミュレーターでクラッシュし、次のエラーが発生します:'NSInternalInconsistencyException'、理由:'NIBデータが無効です。

アップルは何かを変えましたか?

4

1 に答える 1

3

ここにいくつかの提案があります!

最近のバージョンのXcode(Xcode 4.5または4.6)を使用してこのプロジェクトを作成した場合、CustomCellペン先ではデフォルトで自動レイアウトがオンになっています。ただし、iOS5には自動レイアウトはありません。

また、iOS5とiOS6の両方でコードが間違っています。ペン先からセルを取得する場合は、を使用しないでくださいloadNibNamed:。代わりに、ペン先をテーブルビューに登録しregisterNib:forCellReuseIdentifier:ます。これで、呼び出すとdequeueReusableCellWithIdentifier:、必要に応じてペン先が自動的に読み込まれます。このペン先には最上位オブジェクトが1つだけ存在する必要があり、それはセルである必要があることに注意してください。それはばかげたルールですが、それはそうです。

于 2013-03-26T00:30:05.830 に答える