私はxibからstroyboard create previewを使用していますが、次のエラーが発生しました:
file:///Users/miaios/Desktop/Demo/XibDemo/XibDemo/Base.lproj/Main.storyboard: error: IB Designables: Failed to update auto layout status: The agent raised a "NSInternalInconsistencyException" exception: Could not load NIB in bundle: 'NSBundle </Users/miaios/Library/Developer/Xcode/DerivedData/XibDemo-hkqfrktawlqpokczkfobsrmkfxqy/Build/Intermediates/IBDesignables/Products/Debug-iphonesimulator/XibDemo.app> (loaded)' with name 'HXXibView'
file:///Users/miaios/Desktop/Demo/XibDemo/XibDemo/Base.lproj/Main.storyboard: error: IB Designables: Failed to render instance of HXXibView: The agent threw an exception.
コード:
#import <UIKit/UIKit.h>
IB_DESIGNABLE
@interface HXXibView : UIView
@property (nonnull, nonatomic, strong) IBInspectable NSString *text;
@property (weak, nonatomic) IBOutlet UILabel *label;
@end
@implementation HXXibView
#pragma mark - Init Methods
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self xibSetup];
}
return self;
}
- (instancetype)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
[self xibSetup];
}
return self;
}
- (void)setText:(NSString *)text {
_label.text = text;
}
- (NSString *)text {
return _label.text;
}
#pragma mark - Private Methods
- (void)xibSetup {
UIView *view = [self loadViewFromNib];
view.frame = self.bounds;
[self addSubview:view];
}
- (UIView *)loadViewFromNib {
NSBundle *bundle = [NSBundle bundleForClass:[HXXibView class]];
UINib *nib = [UINib nibWithNibName:NSStringFromClass([HXXibView class]) bundle:bundle];
UIView *view = [[nib instantiateWithOwner:self options:nil] firstObject];
return view;
}
@end
File's Owner
クラスではなくクラスごとのXibロードUIView
、オンiOS8
は正常、iOS7
エラー
エラー パス:
1.プロジェクトのターゲットを に変更し
iOS7
ます。2.Xcodeを終了します。
3.DerivedData フォルダーを消去します。
4.プロジェクトを開きます。
5.選択さ
Main.storyboard
れ、プレビューが表示されます。
これはデモです