C# Monotouch:通过编程方式使用动态视图控制器创建UITabbar

C# Monotouch:通过编程方式使用动态视图控制器创建UITabbar,c#,mono,xamarin.ios,uitabbar,C#,Mono,Xamarin.ios,Uitabbar,我尝试了很多方法,在网上搜索都没有成功。以下是我尝试过但无法运行的最简单方法: 如果我运行此代码,它将正确显示选项卡栏,但当我单击选项卡时,我会得到一个异常,我将其粘贴在下面的代码示例下 这是my MainMenu.cs中的一个方法,它是条目xib 我很感激你对我的帮助。提前非常感谢 private void Render_Screen (object sender, RenderScreenEventArgs e) { UITabBarController tabbar

我尝试了很多方法,在网上搜索都没有成功。以下是我尝试过但无法运行的最简单方法:

如果我运行此代码,它将正确显示选项卡栏,但当我单击选项卡时,我会得到一个异常,我将其粘贴在下面的代码示例下

这是my 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.
=================================================================
private void Render_屏幕(对象发送器、RenderScreenEventArgs e)
{
UITabBarController tabbarController=新的UITabBarController();
UINavigationController navController1=新的UINavigationController();
UINavigationController navController2=新的UINavigationController();
UIViewController a=新的UIViewController();
a、 TabBarItem=新的UITabBarItem(UITabBarSystemItem.Contacts,0);
UIViewController b=新的UIViewController();
b、 TabBarItem=新的UITabBarItem(UITabBarSystemItem.Favorites,1);
UIViewController[]arrayA=新的UIViewController[]{a};
UIViewController[]arrayB=新UIViewController[]{b};
navController1.ViewControllers=arrayA;
navController2.ViewControllers=arrayB;
UINavigationController[]arrayC=新的UINavigationController[]{navController1,navController2};
tabbarController.ViewControllers=arrayC;
InvokeOnMainThread(委托{
this.View.AddSubview(tabbarController.View);
});
}
堆栈跟踪:
at(包装器管理为本机)MonoTouch.UIKit.UIApplication.UIApplicationMain(int,string[],intptr,intptr)
位于/Developer/MonoTouch/Source/MonoTouch/src/UIKit/UIApplication.cs:29中的MonoTouch.UIKit.UIApplication.Main(字符串[],字符串,字符串)[0x00042]
在/Users/hschulz/Projects/NotifyMe/NotifyMe/Main.cs:16中的NotifyMe.Application.Main(string[])[0x00000]处
在(包装器运行时调用)。运行时调用无效对象(对象,intptr,intptr,intptr)
本机堆栈跟踪:
0 NotifyMe 0x000e1008单声道句柄本机sigsegv+408
1 NotifyMe 0x00011c7f单信号信号处理器+351
2 libsystem_c.dylib 0x9753459b_sigtramp+43
3.0xFFFFFFFF0x0+4294967295
4 UIKit 0x022a955a-[UIApplication sendAction:toTarget:fromSender:forEvent:+61
5 UIKit 0x024ce569-[UITabBar\u sendAction:withEvent:+466
6 CoreFoundation 0x012d8ec9-[NSObject性能选择器: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发送操作:发送到:forEvent:+66
10 UIKit 0x0234f03f-[UIControl(内部)\u发送操作预防:withEvent:+503
11 UIKit 0x0234ebab-[UIControl发送操作ForControlEvents:+48
12 UIKit 0x024d0d1f-[UITabBar(静态)\u按钮:+123
13 CoreFoundation 0x012d8ec9-[NSObject性能选择器: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发送操作:发送到:forEvent:+66
17 UIKit 0x0234f03f-[UIControl(内部)\u发送操作预防:withEvent:+503
18 UIKit 0x0234e2fe-[UIControl触摸已选择:带事件:][549
19 UIKit 0x022cea30-[UIWindow\u sendTouchesForEvent:+513
20 UIKit 0x022cec56-[UIWindow sendEvent:+273
21 UIKit 0x022b5384-[UIApplication sendEvent:+464
22 UIKit 0x022a8aa9 _UIApplicationHandleEvent+8196
23图形服务0x048a0fa9 PurpleEventCallback+1274
24 CoreFoundation 0x012ab1c5\uuuuCFRUNLOOP\u正在调用\uuU OUT\uU到\uU A\uU源1\uU执行\uU功能\uuuu53
25 CoreFoundation 0x01210022\uu CFRunLoopDoSource1+146
26 CoreFoundation 0x0120e90a _ucfrunlooprun+2218
27 CoreFoundation 0x0120ddb4 CFRunLoopRunSpecific+212
28 CoreFoundation 0x0120dccb CFRUNLOOPSRUNINMODE+123
29图形服务0x0489f879 GSEventRunModal+207
30个图形服务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\u jit\u runtime\u invoke+1407
37 NotifyMe 0x002014A单声道运行时调用+170
38 NotifyMe 0x002E81单声道运行时执行主+705
39 NotifyMe 0x0022091单声道运行时运行主+929
40 NotifyMe 0x000ad5bf mono_jit_exec+239
41通知我0x002f41aa main+5194
42通知我0x00003035启动+53
=================================================================
在执行本机代码时收到SIGSEGV。这通常表明
mono运行时或某个本机库中出现致命错误
由您的应用程序使用。
===============================
    public class test
    {
        UITabBarController tabbarController; 

        privat void RenderScreen()
        {
         ...
        }
    }