gpt4 book ai didi

xamarin.ios - 对 Monotouch 中的事件、代表等感到困惑

转载 作者:行者123 更新时间:2023-12-05 01:24:55 24 4
gpt4 key购买 nike

我来自非常精通的 Windows .NET 背景,我正在尝试使用 Monotouch,但我对如何响应事件感到非常困惑。我喜欢保持简单,我已经阅读了 Montouch 教程并查看了示例。我感到困惑的是如何响应事件。

假设我有一个带有 UIButton 和 UILabel 的 ViewController。当我按下按钮时,我想将标签更改为“单击按钮”。

因此,我可以执行以下操作:

public override void ViewDidLoad () {
base.ViewDidLoad ();
this.btnClickMe.TouchUpInside += (sender, e) => {
this.lblOutput.Text = "Clicked @ " + DateTime.Now.ToShortTimeString ();
}

或者,我可以使用这种方法,我认为在响应 NavigationBars 等中按下的按钮时会更好地为我服务。在 IB 中,我 Ctrl-Drag 创建一个 Action 。然后我将 [Action] 方法移动到我的 .cs 文件并执行以下操作。
[Action ("btnClickMe_TouchUpInside:")]
public void btnClickMe_TouchUpInside (NSObject sender)
{
this.lblOutput.Text = "Clicked @ " + DateTime.Now.ToShortTimeString ();
}

让我更困惑的是一些 UI 组件有一个 .delegate 成员。我可以添加一个事件。

什么是最好的方法,还是我完全糊涂了?如果是这样,有一个链接,您可以将我引导到我可以学习最佳实践、正确方法等的地方。

非常感谢

麦克风

最佳答案

好的介绍,我推荐 Xamarin 关于 Events, Protocols and Delegates 的文章.

至于您将 Action Outlets 与将事件连接到 Reference Outlets 的问题,他们有这样的说法:

The main difference between using .NET events as opposed to target-actions is that the latter allows you to wire up multiple controls to a single action method.



所以,如果你正在构建一个快速而肮脏的计算器,你可能倾向于使用 Action 方法,并且按下数字 0-9 都做同样的事情——你可以从按钮上读取数字。 (如果您曾经使用 VB 创建控件数组,您可能对这种技术很熟悉。)

也就是说,我发现我个人的偏好是坚持使用引用网点。它需要更少的思考和在 MonoDevelop 和 Interface Builder 之间来回走动。我放入一个 UISlider 并引用它,然后我可以从代码中访问它的所有属性和事件。因此,稍后可以从代码中进行 Hook 。许多开发人员评论说他们倾向于不再使用 IB...

回到事实,MonoTouch 提供了多种与 UI 交互的冗余方式。对于那些来自 Objective-C 的人,你会发现熟悉的“Objective-C Delegates”和对“selectors”的引用。来自 C#,您通常可以忽略这些方法。但是,您应该花时间阅读那篇文章,以便熟悉 Apple 文档中使用的语言。例如,重要的是要注意“Objective-C Delegates”和“C# delegates”之间的区别。

Delegates are used for callbacks in iOS similarly to the way .NET uses events. To make iOS APIs and the way they use Objective-C delegates seem more like .NET, MonoTouch exposes .NET events in many places where delegates are used in iOS.



随着时间的推移,我相信您会发现 API 灵活且适用于 .NET 模式。 NS 类型和 .NET 类型之间的转换通常是透明的(例如,从 lambda 表达式到 NSAction)。

如果您需要更具体的信息,请告诉我。
干杯。

关于xamarin.ios - 对 Monotouch 中的事件、代表等感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11459144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com