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

2024-03-05

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

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

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

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

If IIUC:

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

如果有的话我会读一本指南,但我找不到任何具体的内容。

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

Update:
我在 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);
    }

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

已经有以下子项:

更新二:
这会在主窗口中添加一个新的 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 ()
    {
    }
}

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

-- 赏金注释。

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


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将自定义视图动态添加到 Visual Studio for Mac C# 中的视图 的相关文章

随机推荐

  • 如何在 Ubuntu Web 服务器上为 Dart 安装 pub(命令行使用)

    我已按照说明进行操作 在 Linux 选项卡下 将 Dart 安装到 Ubuntu Web 服务器上 Dart 本身工作正常 但我无法使用 Pub 命令 仅限 Dart 命令 如何为服务器安装 Pub 以下是使用 Aptitude apt
  • Google Assistant Dialogflow API V2 webhook ETag 错误

    我正在尝试返回简单的文本响应并使用以下代码在 Google Assistant 应用程序中显示基本卡片 public GoogleCloudDialogflowV2WebhookResponse Search GoogleCloudDial
  • Hadoop 块大小 vs 分割 vs 块大小

    我对 Hadoop 的概念有点困惑 有什么区别Hadoop Chunk size Split size and Block size 提前致谢 块大小和块大小是一样的 分体尺寸可能不同于块 块 size 地图缩减算法不适用于文件的物理块 它
  • 获取当月第一天的最有效方法是什么?

    使用 ruby 我尝试将日期格式化为 2009 10 01 我采用当前日期 2009 10 26 然后将日期更改为 01 我知道有多种方法可以做到这一点 但很好奇从代码角度来看 实现这一目标的最短方法是什么 如果您不介意在应用程序中包含 A
  • 如何使用鼠标滚轮在 WPF 中水平滚动?

    如何使 WPF 能够响应使用鼠标滚轮的水平滚动 例如 我有一个 Microsoft Explorer 迷你鼠标 并尝试使用以下命令水平滚动 ScrollViewer 中包含的内容 HorizontalScrollBarVisibility
  • 使 jQuery 的 .prev().prev().prev().find("selector") 调用更容易

    我怎样才能避免 prev prev prev 打电话 这有捷径吗 您可以使用 prevAll 结合eq or eq since prevAll以相反顺序返回一组元素 从最接近当前元素的元素开始 0 相当于 prev prev prev 将会
  • ODBC 源的版本与此版本的数据流不兼容

    我有一个 SSIS 包 我使用批处理文件通过 DTEXec 运行它 它看起来像这样 cd C Program Files x86 SonicWALL SSL VPN NetExtender NECLI connect s test co u
  • 反序列化复杂对象中的 xml

    我不明白为什么对象为空 WebClient browse new WebClient StreamReader res new StreamReader browse OpenRead http ws audioscrobbler com
  • 将列值与 NA 进行比较

    下面的输入表的数据点是NA 我明白在R当一个值与NA它导致输出是NA 还有办法让我仍然可以使用进行比较ifelse 并确保所比较的值之一是否是NA那么它仍然会提供输出 就像NA是否正在比较字符 字符串 输入原始数据 data lt read
  • 不要在循环内创建函数[重复]

    这个问题在这里已经有答案了 在这种情况下解决 jslint 错误的正确方法是什么 我正在向使用它的对象添加一个 getter 函数 我不知道如何在不创建循环内的函数的情况下执行此操作 for var i 0 i
  • 类在 /Users/... 和 /Applications/... 中实现。使用两者之一。哪一个是未定义的

    我知道这是使用单元测试时的常见错误消息 但我没有这样做 这就是我所做的 我创建了一个新的命令行工具项目 我在print Hello World line 我输入类似的内容po 3 3进入控制台 然后我收到这条消息 objc 929 类 Tt
  • 如何在地图上以最少的重叠绘制网络

    我有一些作者所在的城市或国家 我想知道是否可以在地图上绘制合著者的网络 图 1 其中包含国家的坐标 请考虑来自同一国家 地区的多名作者 编辑 可以像示例中那样生成多个网络 并且不应显示可避免的重叠 这是为数十位作者准备的 缩放选项是可取的
  • \r 不生成换行符

    我使用以下代码 if delanaloge equals stari if novi equals zdruzen else zdruzen zdruzen novi r nap true r附加以创建换行符 但它不会像我预期的那样生成换行
  • VC++中如何判断链接是否存在?

    我有一个链接 我已通过正则表达式检查该链接是否是有效的 URL 现在 我想检查该链接是否是有效的 http 链接 即它不应该是不存在的链接 VC 6 0 MFC 有办法检查吗 一种选择是尝试使用以下方法从该 URL 获取数据URLOpenB
  • 关闭 Twisted conch SSH 连接的正确方法是什么?

    关闭 Twisted conch SSH 连接的正确方法是什么 有没有明确的方法来做到这一点 我见过的所有 Twisted conch 示例都会关闭 SSH 通道 然后停止反应器 反应堆关闭似乎可以处理关闭连接 但是 我将 wxreacto
  • 在Atom中使用anaconda环境

    我已经安装了 Anaconda Python 3 6 和 tensorflow python 3 5 我已经设法让它在 Spyder 和 sublime text 3 上运行 通过创建新的构建系统 现在所有的都是使用Atom 我不习惯 所以
  • 在heroku中记录多行消息

    我正在使用 NodeJS 开发一个应用程序并部署在 Heroku 中 我需要记录多行消息 例如堆栈跟踪和其他多行信息 但希望将它们保留为一条日志消息 问题是当使用console log 或任何使用的框架console log stdout
  • 如何从 AsyncTasks doInBackground() 检索数据?

    我会尽可能让这个简单 我的控制层中有一个使用类的方法CallServiceTask延伸AsyncTask 当调用新的CallServiceTask execute parameters 如何检索从返回的数据doInBackground 我发
  • Pig Latin:从某个日期范围加载多个文件(目录结构的一部分)

    我有以下场景 小猪版本使用0 70 HDFS 目录结构示例 user training test 20100810
  • 如何将自定义视图动态添加到 Visual Studio for Mac C# 中的视图

    我正在完成一个项目 其中我将拥有同一组表单组件的多个正方形大小的实例 我可以在表单 UI 中手动创建 8 个实例 或者我宁愿做的是创建一个视图 或项目渲染器 然后将该视图的实例动态添加到我的主视图中 如何将创建的自定义视图动态添加到 Xam