読者です 読者をやめる 読者になる 読者になる

Keep It Real BLOG

ソフトウェアエンジニア。1児の父。 酒、ラーメン、サッカー好き。旅行も好きですが、普段は出不精で大抵たまプラーザ界隈に居ます。

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

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

他画面から、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;
}

また、別件で、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使いなれてなくて、意外と大変です。。