实际上有人问我这个问题,我也有兴趣知道,如何直接将数据绑定到UI元素。我知道UITableview
具有数据源属性,但它不直接绑定数据。我们必须使用其协议方法来绑定代码中的数据。
我们可以通过其他方式将数据绑定到View,或者这可能与否?在.Net gridview中,我们可以直接将数据从数据库绑定到gridview。
答案 0 :(得分:1)
更新:如果您的意思是将支持数据与UI元素同步,请阅读最后一段。
如果我正确理解您的问题,那么将数据直接绑定到视图将违反推荐的MVC模式。请查看以下链接以获取更多信息。
[为什么MVC而不是好的旧ASP.NET?仍然没有理解为什么我应该走这条路?] [2]
但是如果你确实想直接绑定数据,那么就没有什么可以阻止你了,即使这可能是一个坏主意,除非用例是微不足道的。对于例如UITableViews可用于静态单元格。如果预先构建的UI元素没有直接绑定数据(不知道任何数据)的规定,那么您可以创建一个类似的UI元素来实现此目的。
然而,构建此类元素需要花费更多精力,而不是通过首选方法向现有元素提供数据。
通过直接绑定数据,如果您的意思是通过界面构建器提供数据,那么您就不走运了。在Cocoa中(用于OS X应用程序开发),有一些名为Bindings的东西可以帮助您将UI元素与支持数据同步。但是在iOS中并没有这样的事情。但是你可以使用Key - Value - Observing在某种程度上实现这一点。 另外为什么iOS可能没有这样的绑定可能会在这里部分回答: Is there any technical/conceptual reason why iOS does not support Cocoa Bindings?。 如果您需要这样的功能,请检查这一点:Is there any data binding mechanism available for iOS?
答案 1 :(得分:0)
虽然它没有完全绑定,但我使用了didSet属性观察器来更新这样的UI元素:
var label: UILabel?
var labelText = "Change me." {
didSet {
label?.text = labelText
}
}
假设您已在适当的位置初始化标签。我相信这是你在iOS中最接近的。