2

私はiPad用のUISplitViewControllerを使用するユニバーサルアプリを構築しており、第1世代のiPhone /iPodtouchなどの3.0デバイスでも動作するはずです。問題は、アプリがiPhoneで実行されている間、UISplitViewControllerのインスタンスを実際に作成していないにもかかわらず、それでも恐ろしいことです。

dyld: Symbol not found: _OBJC_CLASS_$_UISplitViewController
  Referenced from: /var/mobile/Applications/.....
  Expected in: /System/Library/Frameworks/UIKit.framework/UIKit

第1世代iPodtouchで実行しようとすると、コンソールでエラーが発生します。ただし、iOS4デバイスではすべて正常に動作します。問題は、UISplitViewControllerをサブクラス化していて、.hファイルから "@interface SplitControl:UISplitViewController{"行を読み取るときにチョークすることだと思います。

サブクラス化した唯一の理由は、shouldAutorotateToInterfaceOrientationメソッドをオーバーライドすることです。私はIBなしでプログラム的にアプリ全体を実行しています。IBを使用してSplitViewControllerを作成し、すべての方向をサポートするように指示すると役立ちますか?

コントローラをサブクラス化せずにshouldAutorotateToInterfaceOrientationをオーバーライドする方法はありますか?3.2より前のデバイスからUISplitViewControllerを非表示にする他の方法はありますか?

4

1 に答える 1

6

UIKit.framework を弱くリンクするだけです。ターゲットの一般設定で、「リンクされたライブラリ」のリストで、UIKit.framework のタイプを「必須」ではなく「弱い」に変更します。

于 2010-08-06T13:17:36.863 に答える