Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Visual Studio for Mac C中将自定义视图动态添加到视图中#_C#_Swift_Xamarin_Interface Builder_Visual Studio Mac - Fatal编程技术网

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

C# 如何在Visual Studio for Mac C中将自定义视图动态添加到视图中#,c#,swift,xamarin,interface-builder,visual-studio-mac,C#,Swift,Xamarin,Interface Builder,Visual Studio Mac,我正在完成一个项目,在这个项目中,我将拥有同一组表单组件的多个正方形大小的实例 我可以在表单UI中手动创建8个实例,也可以创建一个视图(或项目渲染器),然后将该视图的实例动态添加到主视图中 如何在Xamarin表单中向主视图动态添加创建和添加自定义视图 注意:包括Swift标签,因为如果您知道Swift或Objective C,您可能知道答案,因为API包装了Apple API 如果IIUC: 在XCode接口生成器中创建视图 在ViewDidLoad中创建自定义实例视图的实例 将每个实例添加

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

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

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

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

如果IIUC:

  • 在XCode接口生成器中创建视图
  • 在ViewDidLoad中创建自定义实例视图的实例
  • 将每个实例添加到主视图
如果有,我会读一本指南,但我找不到任何具体的指南

有些是相关的。我可以很容易地在Xcode interface Builder中创建一个新视图。有没有办法将其作为类导出到我的应用程序中

更新:
我在Interface Builder中找到了一个文本字段,可以在其中输入类的名称。回到VisualStudio,我的主视图控制器可以看到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);
    }
我注意到控制台日志中有一条注释:

已经有以下子女:

更新二:
这将在主窗口中添加一个新的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);
但它还没有添加我的自定义类

更新III:
我可以添加自定义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 ()
    {
    }
}
请注意上面的代码:我删除了handle参数,因为它导致了编译器错误。 设置:使用Xamarin C#和XCode界面生成器的Visual Studio for Mac

-- 赏金笔记

要获得赏金,您必须说明如何执行赏金要求部分中提到的步骤1或步骤2。我更喜欢第一步。如果您不确定,请询问


我很困惑,你是在构建mac应用程序还是移动应用程序?@BoredToDeath mac应用程序你有没有看一下他们是如何在这里添加“MainViewController”的:如果你按照说明操作,IDE应该在这里自动创建一个类(我知道你是在创建MacOS应用程序还是iOS应用程序,但它的工作原理应该类似),试着将你的问题简化为一个问题,并更新你的问题,这样你就能得到合适的答案attention@Saamer嗨,我看完了。它看起来很有趣,但我认为这不会有帮助,因为它将视图初始化为故事板。除了定位和或堆栈视图没有进行垂直或水平布局之外,我上面的代码可以正常工作。你能分享一下它现在的样子和你想要它的样子吗?