Xcode 3.2.6 / MonoTouch 4.2.x / MonoDevelop 2.6で開発中のiPadプロジェクトがあり、Monotouch 5、MonoDevelop 2.8.1、およびXcode 4.2をインストールすると、プロジェクトがコンパイルされ、正常に実行されます。しかし、Xcode 4.2でXIBファイルを変更し始めたとき(アウトレットを追加したとき)、いくつかの不具合が発生し始めました。
1)アプリがクラッシュし、デバッグモードのMonoDevelopは、ビューアウトレットが設定されていないため、ビューがロードされなかったことを示します。Xcode 4.2では、.hファイルに「view」という名前のアウトレットを作成する必要はなく、ファイル所有者ビューをデザイナのビューコントロールに接続するだけでよいことがわかりました。正しい?
2)主な問題であり、まだ解決されていないのは、「セレクターsetXxxxxが見つかりませんでした」という例外が発生することです。「xxxxx」はUIコントロールのアウトレットの名前です。これは、ベースView Controllerから継承したViewControllerで発生し始めましたが、他の通常のviewControllerを変更し始めるとすぐに、同じタイプのエラーが発生します。何が悪いのかについてのヒントはありますか?
3)いくつかのビューを動的にロードし、正常に動作するコントローラーがあります。しかし、このサブビューアウトレットの1つ(UILabelのテキストなど)にプロパティを設定すると、値は(デバッガーで)設定されますが、UIは変更されません。たとえば、アクションは正常に機能します。何が悪いのか。
4)Xcode4.2でMonoDevelop2.8とうまく統合するために必要な、XIBの特別な設定はありますか?
以前のツールとモノタッチのセットに戻ることを考えましたが、プロジェクトがアップグレードされると、現在行われているすべての開発を失うことなく戻る方法はないと思います。
ありがとう、ペドロ
編集:MonoTouch 5によって生成された新しいクリーンな属性の[Outlet]コード(以前に生成された多くのコードを置き換える)のほかに、重要な違いは、生成された部分クラスがパブリックであり、現在はプライベートである前に、これが私の問題の原因である可能性があることです。パブリック部分クラスを生成する方法や保護する方法はありますか?
編集2:designer.csでMonoTouchによって生成された部分クラスとメンバーにpublicキーワードを手動で追加すると、セレクターは舞台裏で生成され、すべての作業が行われます。これは、パブリックからプライベートの部分クラスへの変更に伴い、MonoTouch 5でバインディングの生成が変更されたことを示しています。これは、設計によるものですか、それともバグによるものですか。アウトレットを使用してビューコントローラーを作成できなくなり、サブクラス化され、子ビューコントローラーが親クラスのアウトレットにアクセスできなくなるのは非常に奇妙なことです。