最後の更新 (4.0.0) の後、問題が発生しました。これはバグであり、修正があるのではないかと考えていました。
以下のコードからわかるように、NavigationItem.RightBarButtonItem を作成し、TouchUpInside イベントにデリゲートを追加しています。ボタンが作成されますが、タッチが発生すると、アプリは恐ろしく死にます(以下を参照)。この更新の前は、コードは完璧に動作していました。
誰でも何か考えがありますか?Monotouch チーム、この問題を認識していますか? コーディングが間違っていて、以前は働いていたのかもしれませんが、新しい更新により、コーディングが間違っていたことが証明されました。
よろしく、
ダニー
コード
//start by creating the view
RectangleF f = new RectangleF(0f,0f,38f,38f);
UIView v = new UIView(f);
//Now create a button with a background
UIButton b = new UIButton(f);
b.SetBackgroundImage(UIImage.FromFile("Images/Common/info.png"),UIControlState.Normal);
//add the button to the view
v.Add(b);
b.TouchUpInside
//give teh button a delegate action
b.TouchUpInside += delegate {
//var vc3 = new iPhone_HomeView();
//var vc3 = new iPhone_RetardView();
//vc3.Title = "asdasd";
//this.NavigationController.PushViewController (vc3, true);
};
//now apply the view to the navigation bar on the right
NavigationItem.RightBarButtonItem = new UIBarButtonItem(v);
NavigationItem.RightBarButtonItem.Width = 38f;
エラー
スタックトレース:
(ラッパー管理からネイティブ) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) で MonoTouch.UIKit.UIApplication.Main (string[],string,string) [0x00038] で /Users /Plasma/Source/iphone/monotouch/UIKit/UIApplication.cs:26 at MonoTouch.UIKit.UIApplication.Main (string[]) [0x00000] in /Users/plasma/Source/iphone/monotouch/UIKit/UIApplication.cs: 31 at SmartPhoneSolution.Application.Main (string[]) [0x00000] /Users/aprdev/Projects/SmartPhoneSolution/SmartPhoneSolution/Main.cs:15 at (wrapper runtime-invoke) .runtime_invoke_void_object (object,intptr,intptr,intptr)
ネイティブ スタック トレース:
0 SmartPhoneSolution1 0x000d0db5 mono_handle_native_sigsegv + 343
1 SmartPhoneSolution1 0x0000f80c mono_sigsegv_signal_handler + 322
2 libSystem.B.dylib 0x996fb45b _sigtramp + 43
3 ??? 0xffffffff 0x0 + 4294967295
4 UIKit 0x01b92de0 -[UIControl sendAction:to:forEvent:] + 67
5 UIKit 0x01b95262 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
6 UIKit 0x01b93e0f -[UIControl touchesEnded:withEvent:] + 458
7 UIKit 0x01b2b3d0 -[UIWindow _sendTouchesForEvent:] + 567
8 UIKit 0x01b0ccb4 -[UIApplication sendEvent:] + 447
9 UIKit 0x01b119bf _UIApplicationHandleEvent + 7672
10 GraphicsServices 0x05768822 PurpleEventCallback + 1550
11 CoreFoundation 0x00debff4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
12 CoreFoundation 0x00d4c807 __CFRunLoopDoSource1 + 215
13 CoreFoundation 0x00d49a93 __CFRunLoopRun + 979
14 CoreFoundation 0x00d49350 CFRunLoopRunSpecific + 208
15 CoreFoundation 0x00d49271 CFRunLoopRunInMode + 97
16 GraphicsServices 0x0576700c GSEventRunModal + 217
17 GraphicsServices 0x057670d1 GSEventRun + 115
18 UIKit 0x01b15af2 UIApplicationMain + 1160
19 ??? 0x0ba72744 0x0 + 195503940
20 ??? 0x0ba7267a 0x0 + 195503738
21 ??? 0x090bfb9e 0x0 + 151780254
22 ??? 0x090bfaea 0x0 + 151780074
23 ??? 0x090bfb75 0x0 + 151780213
24 SmartPhoneSolution1 0x0000f5c7 mono_jit_runtime_invoke + 1332
25 SmartPhoneSolution1 0x001ed281 mono_runtime_invoke + 137
26 SmartPhoneSolution1 0x001ef968 mono_runtime_exec_main + 669
27 SmartPhoneSolution1 0x001eed52 mono_runtime_run_main + 843
28 SmartPhoneSolution1 0x000a3153 mono_jit_exec + 200
29 SmartPhoneSolution1 0x002a16b8 main + 4155
30 SmartPhoneSolution1 0x00002949 _start + 208
31 SmartPhoneSolution1 0x00002878 start + 40
gdb からのデバッグ情報:
/tmp/mono-gdb-commands.WL0ypx:1: ソース コマンド ファイルのエラー: 自分自身をデバッグできません
================================================== =============== ネイティブ コードの実行中に SIGSEGV を取得しました。これは通常、モノラル ランタイムまたはネイティブ ライブラリの 1 つで致命的なエラーが発生したことを示します。
アプリケーションで使用されます。
未処理の例外: System.NullReferenceException: オブジェクト参照が (ラッパー管理からネイティブへ) MonoTouch.UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr) でオブジェクトのインスタンスに設定されていません。 .Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x00038] in /Users/plasma/Source/iphone/monotouch/UIKit/UIApplication.cs:26 at MonoTouch.UIKit.UIApplication.Main (System.String[] args) [0x00000] in /Users/plasma/Source/iphone/monotouch/UIKit/UIApplication.cs:31 at SmartPhoneSolution.Application.Main (System.String[] args) [0x00000] in /Users /aprdev/Projects/SmartPhoneSolution/SmartPhoneSolution/Main.cs:15