【问题标题】:Load XIB into ViewController Xamarin?将 XIB 加载到 ViewController Xamarin 中?
【发布时间】:2023-04-06 05:15:01
【问题描述】:

可以在 xamarin 中从自定义 XIB 创建和加载视图吗? 在 Objective-C 中是这样的:

self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = self.viewController;

【问题讨论】:

    标签: view xamarin xib nib


    【解决方案1】:

    1 - 创建您的 XIB 文件(例如 MyView)。

    2 - 在与 XIB 文件相关的 .cs 中添加此静态创建器方法:

    partial class MyView : UIView
        {
            public MyView (IntPtr handle) : base (handle)
            {    
            }
    
            public static MyView Create()
            {    
                var arr = NSBundle.MainBundle.LoadNib ("MyView", null, null);
                var v = arr.GetItem<MyView>(0);
    
                return v;
            }
        }
    

    3 - 将MyView 添加到ViewController

    public partial class ViewController : UIViewController
    {
        MyView v;
        public ViewController (IntPtr handle) : base (handle)
        {
        }
    
        public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();
    
            v = MyView.Create();
            v.Frame = View.Frame;
            View.AddSubview (v);
        }
    }
    

    您可以阅读更多here

    【讨论】:

    • 静态方法 Create 不是静态构造函数。
    • 这里的想法是通过静态方法创建 xib,而不是从静态构造函数。
    • 我知道。您写道 Create 方法是一个静态构造函数。它不是。从 C# 的角度来看,这是一个普通的静态方法。
    • 我在这里得到“指定的强制转换无效”异常` var v = Runtime.GetNSObject (arr.ValueAt(0)); `
    • 这很奇怪,你能用它创建一个 github repo 吗?
    猜你喜欢
    • 1970-01-01
    • 2021-04-11
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    相关资源
    最近更新 更多