我正在完成一个项目,其中我将拥有同一组表单组件的多个正方形大小的实例。
我可以在表单 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 步。如果您不确定,请询问。