1

" * -[PlayingCell layoutSublayersOfLayer:]、/SourceCache/UIKit_Sim/UIKit-2372/UIView.m:5776 2013-11-01 18:44:12.526 SnapTrack[216:c07] でのアサーションの失敗 *キャッチされない例外によるアプリの終了 ' NSInternalInconsistencyException'、理由: '-layoutSubviews の実行後も自動レイアウトが必要です。PlayingCell の -layoutSubviews の実装は、super を呼び出す必要があります。'"

iOS6 シミュレーターで自分のアプリ (iOS7 用に設計したもの) を実行しようとしています。私のプロジェクトには TabBarController が含まれています。tabbarcontroller の最初のビュー コントローラーには、カスタム UITableViewCell を含むテーブル ビューがあります。問題なくロードされます。ただし、カスタムセルを使用して別のテーブルビューがある別のタブに切り替えると、上記のエラーが表示されます。viewController はほぼ同じように設定されています (どちらも自動レイアウトで編成されたサブビューを持っています)。誰もこの例外を見たことがありますか/対処方法を知っていますか?

ありがとう!

編集: PlayingCell のコード。

#import <UIKit/UIKit.h>

@interface PlayingCell : UITableViewCell
@property (strong, nonatomic) IBOutlet UILabel *lblTrackNum;
@property (strong, nonatomic) IBOutlet UIImageView *albumArt;
@property (strong, nonatomic) IBOutlet UILabel *lblSongTitle;

@property (strong, nonatomic) IBOutlet UILabel *lblAlbumTitle;
@property (strong, nonatomic) IBOutlet UILabel *lblArtist;

@property (strong, nonatomic) IBOutlet UIImageView *imgPlay;
@property (strong,nonatomic) NSMutableDictionary *songInfo;

- (IBAction)downloadBtnPressed:(id)sender;

@end
#import "PlayingCell.h"

@implementation PlayingCell
@synthesize songInfo;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code
    }
    return self;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

- (IBAction)downloadBtnPressed:(id)sender

{
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[songInfo objectForKey:@"trackViewUrl"]]];
    NSLog(@"%@",[songInfo objectForKey:@"trackViewUrl"]);
}

-(void)layoutSubviews
{
    [super layoutSubviews];

}
4

1 に答える 1

1

エラーの状態を実行します。layoutSubviewsカスタム セル クラスの 1 つで、メソッドをオーバーライドしているようです。実装で呼び出す必要があり[super layoutSubviews]ます。これは通常、1 行目です。

- (void)layoutSubviews {
    [super layoutSubviews];
    // the rest of your custom layout code
}
于 2013-11-01T23:02:54.837 に答える