xcodeでpushして新しく作成した画面に遷移する際に、よく分からん感じになってエラーになる現象。
ナビゲーションバーで前の画面に戻ろうとすると真っ黒になって落ちます。
nested push animation can result in corrupted navigation barというエラーも出てます。
5分程悩んだので。
エラーは以下。
2014-02-15 11:24:27.012 Woodsmall[15070:60b] nested push animation can result in corrupted navigation bar 2014-02-15 11:24:27.414 Woodsmall[15070:60b] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
これ、UITableViewのCellをタップすると別画面に遷移するんですが、結論から言うと12行目の「break;」を書き忘れていただけ!
これたまにやります。
// セルタップ時
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES]; // 選択状態の解除
if (indexPath.section == 0) {
switch (indexPath.row) {
case 0:
{
// 画面遷移
ViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
[self.navigationController pushViewController:viewController animated:YES];
break;
}
case 1:
{
// 画面遷移
break;が無いので、case 0で画面遷移して、更にcase 1でもう1つの画面に遷移。
分かってしまえば、エラー内容も納得なんですが。
あと、Androidもそうだけど、他の人が作ったアプリを触ってると変な動作する時があって。
それも大体これです。
あとはxcode(Objective-C)の場合、switch文のcaseは以下ではなくて。
switch (indexPath.row) {
case 0:
// 処理
break;
case 1:
// 処理
break;
}
こっちが正しい。
switch (indexPath.row) {
case 0:
{
// 処理
break;
}
case 1:
{
// 処理
break;
}
}
これも、xcodeで開発しはじめた頃はハマりました。
株式会社woodsmallの小林でした。
https://woodsmall.co.jp/
コメント