我正在完成一个项目,在该项目中我将拥有同一组表单组件的多个正方形大小的实例。
我可以在表单 UI 中手动创建 8 个实例,或者我更愿意创建一个视图(或项目渲染器),然后将该视图的实例动态添加到我的主视图中。
如何向 Xamarin 表单中的主视图动态添加创建和自定义视图?
注意:包括 Swift 标签,因为如果您了解 Swift 或 Objective C,那么您可能知道答案,因为 API 包装了 Apple API。
如果 IIUC:
如果有指南,我会阅读指南,但我找不到任何关于此的具体内容。
一些相关的东西。我可以很容易地在 Xcode 界面生成器中创建一个新视图。有没有办法将它作为一个类导出到我的应用程序中?
更新:
我在 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 ()
{
}
}
请注意上面的代码:我删除了句柄参数,因为它导致了编译器错误。 设置:Visual Studio for Mac 使用 Xamarin C# 和 XCode Interface Builder
-- 赏金笔记。
要获得赏金,您必须在赏金要求部分展示如何执行上述第 1 步或第 2 步。我更喜欢第 1 步。如果您不确定,请询问。