0

MonoTouch 5にアップグレードしました。アップグレードしてから、新しく作成したボタンは既存のプロジェクトでは機能しません。アップグレード前に作成されてイベントにバインドされたすべてのボタンは引き続き完全に機能しますが、新しいボタンを作成してイベントにバインドするとすぐに、アプリがシミュレーターでクラッシュします。

興味深いのは、アップグレード後に新しいプロジェクトを作成し、通常どおりにInterface Builderでボタンを作成し、通常どおりにイベントにバインドすると、正常に機能することです。クラッシュは、アップグレード前に作成された既存のプロジェクトにアップグレード後に新しいボタンを追加した場合にのみ発生します。アップグレード後に作成およびバインドされるボタンは、アップグレード前に実行されたものとまったく同じです。

また、アップグレード後に新しいテストプロジェクトを作成し、AppDelegateファイルとMaincsファイルのコードを比較しました。すべてがまったく同じです!

足りないものはありますか?私はインターネットを偵察し、Stack Overflowを含むあらゆる場所からソリューションを試しましたが、役に立ちませんでした。大変な作業なので、既存のコードを新しいプロジェクトに移動したくありません。

スタックトレースエラー:

012-07-03 19:18:30.189 Calculator[605:1207] -[__NSCFType btnSave:]: unrecognized selector sent to instance 0x7106fd0

Unhandled Exception: MonoTouch.Foundation.MonoTouchException: Objective-C exception thrown.  Name: NSInvalidArgumentException Reason: -[__NSCFType btnSave:]: unrecognized selector sent to instance 0x7106fd0
  at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr)
  at MonoTouch.UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x00042] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:29 
  at ScamCalculator.Application.Main (System.String[] args) [0x00000] in /Users/joachimpr/Projects/ScamCalculator/ScamCalculator/Main.cs:17 
[ERROR] FATAL UNHANDLED EXCEPTION: MonoTouch.Foundation.MonoTouchException: Objective-C exception thrown.  Name: NSInvalidArgumentException Reason: -[__NSCFType btnSave:]: unrecognized selector sent to instance 0x7106fd0
  at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr)
  at MonoTouch.UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x00042] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:29 
  at ScamCalculator.Application.Main (System.String[] args) [0x00000] in /Users/joachimpr/Projects/ScamCalculator/ScamCalculator/Main.cs:17 

ボタンは、InterfaceBuilderのアウトレットとしてリンクされています。ボタンのイベントコード:

public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();

            // Perform any additional setup after loading the view, typically from a nib.

            btnSave.TouchUpInside += (sender, e) => {
                Console.WriteLine("click");
            };
        }
4

1 に答える 1

0

インスタンスを失っていたビューがあったことが判明しました。このビューをクラスインスタンスに移動しましたが、正常に機能するようになりました。

于 2012-07-04T07:00:39.963 に答える