如何将自定义视图动态添加到 Visual Studio for Mac C#

时间:2021-05-18 12:42:39

标签: c# swift xamarin interface-builder visual-studio-mac

我正在完成一个项目,在该项目中我将拥有同一组表单组件的多个正方形大小的实例。

我可以在表单 UI 中手动创建 8 个实例,或者我更愿意创建一个视图(或项目渲染器),然后将该视图的实例动态添加到我的主视图中。

如何向 Xamarin 表单中的主视图动态添加创建和自定义视图?

注意:包括 Swift 标签,因为如果您了解 Swift 或 Objective C,那么您可能知道答案,因为 API 包装了 Apple API。

如果 IIUC:

  • 在 XCode Interface Builder 中创建视图
  • 在 ViewDidLoad 中创建自定义实例视图的实例
  • 将每个实例添加到主视图

如果有指南,我会阅读指南,但我找不到任何关于此的具体内容。

一些相关的东西。我可以很容易地在 Xcode 界面生成器中创建一个新视图。有没有办法将它作为一个类导出到我的应用程序中?

enter image description here

更新:
我在 Interface Builder 中找到了一个文本字段,我可以在其中输入类的名称。回到 Visual Studio,我的主视图控制器可以看到 HelloWorld 类。我找到了一个名为 AddChildViewController 的方法。我试着测试一下。什么都没发生。我需要设置位置和大小吗?我找不到任何 API 来执行此操作。

明天我会再次搜索古代文本例如代码。也许我错过了什么?

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

        var view = new HelloView(this.Handle);
        var handle = view.Handle;
        base.AddChildViewController(view);
        var view2 = new HelloView(this.Handle);
        handle = view.Handle;
        base.AddChildViewController(view2);
    }

我注意到控制台日志中有一条注释:

<块引用>

已经有以下的孩子: <视图控制器:0x600000a94180>

更新二:
这会在主窗口中添加一个新的 NSView,然后在该视图中添加一个 NSButton:

var frame = new CoreGraphics.CGRect(0, 0, 100, 100);
var button = new NSButton(frame) {
    Title = "My Button",
};

var view = new NSView(frame) {};
view.AddSubview(button);
View.AddSubview(view);

虽然它没有添加我的自定义类。

更新三:
我可以添加自定义 HelloWorldView 类,但控件不可见。如果我在表单中添加一个按钮,我会看到它,但它锚定在屏幕底部。我没有看到从 Interface Builder 创建的控件。

        //var frame = this.View.Frame;
        var frame = new CoreGraphics.CGRect(0, 0, 100, 20);
        var button = new NSButton(frame) {
            Title = "My Button"
        };
        var frame2 = new CoreGraphics.CGRect(0, 0, 100, 100);
        var helloView = new HelloView() {
        };

        helloView.Frame = frame2;
        helloView.AddSubview(button);
        mainFrame.AddSubview(helloView);

HelloView.cs:

public partial class HelloView : NSView
{
    public HelloView () : base ()
    {
    }
}

请注意上面的代码:我删除了句柄参数,因为它导致了编译器错误。 设置:Visual Studio for Mac 使用 Xamarin C# 和 XCode Interface Builder

-- 赏金笔记。

要获得赏金,您必须在赏金要求部分展示如何执行上述第 1 步或第 2 步。我更喜欢第 1 步。如果您不确定,请询问。

enter image description here

0 个答案:

没有答案