我的问题是关于视图控制器,代表以及所有这些。我对UIView,UIViewController,Delegates和Sources感到非常满意,比如UITableView。这一切都有道理。
现在我已经实现了我的第一个真正的自定义视图。没有涉及XIB。它是一个自动完成的地址选择器,非常类似于Mail应用程序。每当添加收件人时,它都会创建这些蓝色按钮,并具有原始键盘支持。
它是UIView的子类。没有控制器,没有委托,没有来源。我想知道我是否应该有其中一个?或者全部,使它成为一个干净的实现。
我无法理解视图控制器在我的情况下会产生的感觉。我的自定义视图非常像控件,而UIButton也没有控制器。 在我看来,它会控制什么?
我的一些想法:
对于源:当前视图具有属性“PossibleAutocompleteRecipients”,其中包含自动填充的地址。我想这将是“源”实现的候选者。但这真的值得吗?我宁愿将控制器传递给视图并将属性放入控制器。
可以使用“SelectedRecipients”属性检索选定的收件人。但我了解到,观点不应该存储价值观。那会怎么样?进入控制器?
“AllowSelectionFromAddressBook”等所有属性怎么样?同样,如果我与UIButton比较,这些属性类似于按钮的“安全”属性。所以他们被允许进入视野。
委托可以使用“WillAddRecipient”,“WillRemoveRecipient”等方法,用户可以返回TRUE / FALSE以防止操作发生。正确的吗?
我是否应该首先从UIControl继承,而不是从UIView继承?
最后但同样重要的是:如果旋转设备,我的自定义视图会完美旋转。为什么不是所有观点?为什么有些人需要一个实现ShouldAutoRotateToDeviceOrientation()的控制器?
我上面写的是否有意义?最后我将在我的网站上提供源代码,因为我花了一些时间来实现它,我想分享它,因为我没有在MonoTouch中找到类似Mail-App的自动完成控件的类似实现。 我只想尽可能地学习和理解,并将其包含在源头中。
勒
答案 0 :(得分:1)
我可以回答你的部分问题。
我只是不能把手指放在上面 感知视图控制器会进入 我的情况
ViewController负责处理View的状态转换(加载,显示,旋转等)。这些转换主要用于使用导航组件(UINavigationViewController,UITabBarController)时。这些组件需要接收一个ViewController来处理视图的转换。
例如,当您在UINavigationViewController上推送ViewController时,它将导致ViewDidLoad,ViewWillAppear,ViewDidAppear。它还会导致当前ViewController的ViewWillDisappear,ViewDidDisappear。
因此,如果您的应用程序只有一个纵向视图,则不需要ViewController。您可以将自定义视图添加为主窗口的子视图。