2011-12-29 78 views
2

我嘗試了很多方法,並通過網絡搜索沒有成功。以下是我嘗試過的最簡單的方法,但無法運行:Monotouch:以編程方式使用動態ViewControllers創建UITabbar

如果我運行此代碼,它將正確顯示Tabbar,但當我單擊這些選項卡時,將得到一個異常,我粘貼下面的代碼示例。

這是我的MainMenu.cs中的一個方法,它是條目xib。

我很感激任何幫助。非常感謝您提前!

private void Render_Screen (object sender, RenderScreenEventArgs e) 
    { 
     UITabBarController tabbarController = new UITabBarController(); 

     UINavigationController navController1 = new UINavigationController(); 
     UINavigationController navController2 = new UINavigationController(); 

     UIViewController a = new UIViewController(); 
     a.TabBarItem = new UITabBarItem(UITabBarSystemItem.Contacts, 0); 
     UIViewController b = new UIViewController(); 
     b.TabBarItem = new UITabBarItem(UITabBarSystemItem.Favorites, 1); 

     UIViewController[] arrayA = new UIViewController[] { a }; 
     UIViewController[] arrayB = new UIViewController[] { b }; 

     navController1.ViewControllers = arrayA; 
     navController2.ViewControllers = arrayB; 

     UINavigationController[] arrayC = new UINavigationController[] { navController1, navController2 }; 

     tabbarController.ViewControllers = arrayC; 

     InvokeOnMainThread (delegate { 
      this.View.AddSubview (tabbarController.View); 
     }); 
    } 


Stacktrace: 

    at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication.UIApplicationMain (int,string[],intptr,intptr) <IL 0x0009f, 0xffffffff> 
    at MonoTouch.UIKit.UIApplication.Main (string[],string,string) [0x00042] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:29 
    at NotifyMe.Application.Main (string[]) [0x00000] in /Users/hschulz/Projects/NotifyMe/NotifyMe/Main.cs:16 
    at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <IL 0x00050, 0xffffffff> 

Native stacktrace: 

0 NotifyMe       0x000e1008 mono_handle_native_sigsegv + 408 
1 NotifyMe       0x00011c7f mono_sigsegv_signal_handler + 351 
2 libsystem_c.dylib     0x9753459b _sigtramp + 43 
3 ???         0xffffffff 0x0 + 4294967295 
4 UIKit        0x022a955a -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 61 
5 UIKit        0x024ce569 -[UITabBar _sendAction:withEvent:] + 466 
6 CoreFoundation      0x012d8ec9 -[NSObject performSelector:withObject:withObject:] + 73 
7 UIKit        0x022a95c2 -[UIApplication sendAction:to:from:forEvent:] + 96 
8 UIKit        0x022a955a -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 61 
9 UIKit        0x0234eb76 -[UIControl sendAction:to:forEvent:] + 66 
10 UIKit        0x0234f03f -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 503 
11 UIKit        0x0234ebab -[UIControl sendActionsForControlEvents:] + 48 
12 UIKit        0x024d0d1f -[UITabBar(Static) _buttonUp:] + 123 
13 CoreFoundation      0x012d8ec9 -[NSObject performSelector:withObject:withObject:] + 73 
14 UIKit        0x022a95c2 -[UIApplication sendAction:to:from:forEvent:] + 96 
15 UIKit        0x022a955a -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 61 
16 UIKit        0x0234eb76 -[UIControl sendAction:to:forEvent:] + 66 
17 UIKit        0x0234f03f -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 503 
18 UIKit        0x0234e2fe -[UIControl touchesEnded:withEvent:] + 549 
19 UIKit        0x022cea30 -[UIWindow _sendTouchesForEvent:] + 513 
20 UIKit        0x022cec56 -[UIWindow sendEvent:] + 273 
21 UIKit        0x022b5384 -[UIApplication sendEvent:] + 464 
22 UIKit        0x022a8aa9 _UIApplicationHandleEvent + 8196 
23 GraphicsServices     0x048a0fa9 PurpleEventCallback + 1274 
24 CoreFoundation      0x012ab1c5 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53 
25 CoreFoundation      0x01210022 __CFRunLoopDoSource1 + 146 
26 CoreFoundation      0x0120e90a __CFRunLoopRun + 2218 
27 CoreFoundation      0x0120ddb4 CFRunLoopRunSpecific + 212 
28 CoreFoundation      0x0120dccb CFRunLoopRunInMode + 123 
29 GraphicsServices     0x0489f879 GSEventRunModal + 207 
30 GraphicsServices     0x0489f93e GSEventRun + 114 
31 UIKit        0x022a6a9b UIApplicationMain + 1175 
32 ???         0x0e05a305 0x0 + 235250437 
33 ???         0x0e058b90 0x0 + 235244432 
34 ???         0x0e058888 0x0 + 235243656 
35 ???         0x0e0589de 0x0 + 235243998 
36 NotifyMe       0x000119cf mono_jit_runtime_invoke + 1407 
37 NotifyMe       0x0022014a mono_runtime_invoke + 170 
38 NotifyMe       0x00222e81 mono_runtime_exec_main + 705 
39 NotifyMe       0x00222091 mono_runtime_run_main + 929 
40 NotifyMe       0x000ad5bf mono_jit_exec + 239 
41 NotifyMe       0x002f41aa main + 5194 
42 NotifyMe       0x00003035 start + 53 

================================================================= 
Got a SIGSEGV while executing native code. This usually indicates 
a fatal error in the mono runtime or one of the native libraries 
used by your application. 
================================================================= 

回答

0

看來,聲明外部工具欄解決了我的問題。

public class test 
    { 
     UITabBarController tabbarController; 

     privat void RenderScreen() 
     { 
     ... 
     } 
    } 
0

此異常是因爲您的應用程序是使用5.0 SDK構建的,但您使用的是4.3 SDK。幾周前我遇到了這個問題。

爲了解決這個問題,當模擬器通知你崩潰時,有一個按鈕「Switch SDK」。選擇它,然後它會顯示可用的SDK。從列表中選擇5.0。重新啓動,這將解決您的問題。

+0

嗨米格爾感謝您的迴應!我無法找到開關SDK按鈕,而是將其在「iPhone Build」中的「主菜單」選項中從默認切換到5.0,但沒有解決問題。你能否詳細描述一下你提到的那個按鈕?我在MonoTouch 5.0.4上使用Mono Develop 2.8.5。提前致謝! – 2012-01-02 11:36:41

相關問題