MVC基础:我应该在自定义视图中添加UIViewController,Delegate或Source吗?

时间:2011-01-28 21:25:35

标签: xamarin.ios

我的问题是关于视图控制器,代表以及所有这些。我对UIView,UIViewController,Delegates和Sources感到非常满意,比如UITableView。这一切都有道理。

现在我已经实现了我的第一个真正的自定义视图。没有涉及XIB。它是一个自动完成的地址选择器,非常类似于Mail应用程序。每当添加收件人时,它都会创建这些蓝色按钮,并具有原始键盘支持。

它是UIView的子类。没有控制器,没有委托,没有来源。我想知道我是否应该有其中一个?或者全部,使它成为一个干净的实现。

我无法理解视图控制器在我的情况下会产生的感觉。我的自定义视图非常像控件,而UIButton也没有控制器。 在我看来,它会控制什么?

我的一些想法:

对于源:当前视图具有属性“PossibleAutocompleteRecipients”,其中包含自动填充的地址。我想这将是“源”实现的候选者。但这真的值得吗?我宁愿将控制器传递给视图并将属性放入控制器。

可以使用“SelectedRecipients”属性检索选定的收件人。但我了解到,观点不应该存储价值观。那会怎么样?进入控制器?

“AllowSelectionFromAddressBook”等所有属性怎么样?同样,如果我与UIButton比较,这些属性类似于按钮的“安全”属性。所以他们被允许进入视野。

委托可以使用“WillAddRecipient”,“WillRemoveRecipient”等方法,用户可以返回TRUE / FALSE以防止操作发生。正确的吗?

我是否应该首先从UIControl继承,而不是从UIView继承?

最后但同样重要的是:如果旋转设备,我的自定义视图会完美旋转。为什么不是所有观点?为什么有些人需要一个实现ShouldAutoRotateToDeviceOrientation()的控制器?

我上面写的是否有意义?最后我将在我的网站上提供源代码,因为我花了一些时间来实现它,我想分享它,因为我没有在MonoTouch中找到类似Mail-App的自动完成控件的类似实现。 我只想尽可能地学习和理解,并将其包含在源头中。

1 个答案:

答案 0 :(得分:1)

我可以回答你的部分问题。

  

我只是不能把手指放在上面   感知视图控制器会进入   我的情况

ViewController负责处理View的状态转换(加载,显示,旋转等)。这些转换主要用于使用导航组件(UINavigationViewController,UITabBarController)时。这些组件需要接收一个ViewController来处理视图的转换。

例如,当您在UINavigationViewController上推送ViewController时,它将导致ViewDidLoad,ViewWillAppear,ViewDidAppear。它还会导致当前ViewController的ViewWillDisappear,ViewDidDisappear。

因此,如果您的应用程序只有一个纵向视图,则不需要ViewController。您可以将自定义视图添加为主窗口的子视图。