Xibファイルがちゃんと読み込まれない

プログラミング

Xibファイル使い方見直し

iOS7からアプリ作成に手を出した自分は、storyboardばかりで今までXibファイルは使わずに作成していました。
ただ、それだけではUIWindowレベルから弄る際に支障をきたしてしまった為、Xibを使うことになり、その際に問題が出たのでメモしておきます。

pushする場合

他画面から、Xibを使用したコントローラに遷移する際、最初は以下のようにやっていました。

ViewController* viewController = [[ViewController alloc] initWithNibName:@"NibFileName" bundle:nil];
[self.navigationController pushViewController:viewController animated:YES];

ただこれでは上手く行かず、以下のように修正することで上手くいきました。ただ単に読んだcontroller側のinitでNibファイルを呼ぶようにしただけです。

ViewController* viewController = [[ViewController alloc] init];
[self.navigationController pushViewController:viewController animated:YES];

ViewController.m

-(id)init
{
    self = [super initWithNibName:@"NibFileName" bundle:nil];
    return self;
}

deallocateエラー

また、別件で、XibにしてからscrollViewDidScroll message sent to deallocated instanceというエラーが出ていたので、以下のように修正したら、エラーがなくなって問題なく動くようになりました。

- (void)back:(id)sender
{
    view.delegate = nil;
    [self.navigationController popViewControllerAnimated:YES];
}

参照:UICollectionView calling scrollViewDidScroll: when popped from the navigation stack

最後に

Xib使い慣れなくて、意外と大変です。。storyboardで呼ぶ際と、結構違いがあるのが大変ですね。。

コメントを残す