私はこのようなビューコントローラルート要素とペン先を持っている:トップレベルのViewControllerでXIBを読み込む方法は?
私は、自動レイアウトを使用して、上部と下部レイアウトガイドに対して要素を位置決めすることができます。ファイルの所有者という、
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "SearchViewControllerPro" nib but the view outlet was not set.'
は、それが私に指摘されたエラーをグーグル:私は最初
SearchViewControllerPro* searchViewController = [[SearchViewControllerPro alloc]initWithNibName:@"SearchViewControllerPro" bundle:[NSBundle mainBundle]];
を使用して、このペン先をロードしようとしたとき、私は次の実行時例外が発生しました
のxibをビューコントローラのクラスに設定する必要があり、ビューコンセントをxibのビューオブジェクトに設定する必要がありました。私がそうするならば、私は次の実行時エラーを取得:ビューは、ファイルの所有者とペン先のトップレベルのビューコントローラの両方に関連付けられているので、
Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'A view can only be associated with at most one view controller at a time! View > is associated with . Clear this association before associating this view with .'
は驚きと来ません。しかし、実際には2つの別個のエンティティではなく、まったく同じことを実行時にどのように伝えることができますか?
編集:
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key view.
一時的な解決策:
私はそうのようなペン先からのViewControllerをunpckしようと、NSArray* xibContents = [[NSBundle mainBundle] loadNibNamed:@"SearchViewControllerPro" owner:nil options:nil];
SearchViewControllerPro* mapSearchViewController = [xibContents lastObject];
を、それは良いのいずれかを実行しません
解決策が見つかりましたが、それほど美味しくありません。 IBに示す構造にもかかわらず、ビューコントローラはxibの最後のオブジェクトではありません。だから私は持っています:
__block SearchViewControllerPro* mapSearchViewController = nil;
[xibContents enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([obj isKindOfClass:[SearchViewControllerPro class]]) {
mapSearchViewController = obj;
}
}];
これは実行時のクラッシュなしで動作するようです。しかし、それはクリーンなコード以外はすべてです。
..あなたは、あなたのペン先のエラーを持っています。クラス名が正しいことを確認し、間違った接続を手動で切断する必要があります。あなたはFilesOwnerのクラスとして何を設定しましたか? FilesOwnerにどのような接続をしましたか? – hooleyhoop
[NSBundle mainBundle] loadNibNamed:...またはSearchViewControllerPro alloc] initWithNibName:を実行するかどうかによって変わることがわかっている限り、FilesOwnerのクラスをどのように設定するかは関係ありません。読み込み方法を変更した場合、FilesOwnerは無効になります(クラッシュします) – hooleyhoop