2015年7月9日木曜日

[解決] Xcode 6.4のMaster-DetailテンプレートがiOS 7.1のiPadで動作しない不具合の回避

こちらと同じ現象で困り、別の方法で回避しました。

Xcode6でiOS7向けにMaster-Detailアプリを作る時の注意点 - 技術はメシのタネ








要は、iOS8にしか存在しないdisplayModeButtonItemにアクセスしているから悪いのです。

と言うわけで2箇所(AppDelegate.mとMasterViewController.m)ある当該部分をiOS8以前は実行しないよう、このようにif文で囲みました。

if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1) {
    navigationController.topViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem;
}

これで良いのか悪いのかがサッパリ分からないのでスッキリしません。
たとえばこのような疑問が残ります。
  • バージョンで見るのが正しいのか?フィールド(Selector?)の有無で判断するほうが良いのではないか。
  • 比較に使っている定義がiOS7.1までしかない。コードとしては「7.1より大きいとき」となるので万が一7.2などが出たら動かない(出ないだろうけど)
  • iOS7以下の時に何か実行しなければならない処理はないのか。
気にはなりますが、回避はできたのでひとまず良しとします。

なお比較の方法はここを参考にしました。









0 件のコメント:

コメントを投稿