指向UIViewController

指向UIViewController

我刚刚继承了一个代码库,该项目似乎主要由UIViews组成。

这是UIView头文件的示例,该头文件写于2014年7月29日,因此代码相对较新:

#import <UIKit/UIKit.h>

@interface SettingsView : UIView {
    UIView *aView;
    UIViewController *controller;
}
@property(nonatomic,strong)UIView * aView;
@property(nonatomic,strong)UIViewController * controller;

@end

您可以看到有一个指向UIViewController的指针。在实现文件中,mainView在几个地方使用。这是一个例子:
MyView *myView = [[MyView alloc] initWithFrame:CGRectMake(0, yPos, scroller.frame.size.width, 50)];
myView = 102;
myView = mainView; // Here we are setting another view with this controller.
[scroller myView];

对我来说,这段代码感觉不对。但是我想知道是否有充分的理由有人会从UIView指向UIViewController。多年来,我已经看到了我应得的iOS代码份额,这是我第一次看到这一点。

任何见解将不胜感激。

最佳答案

我也使用这样的观点。我使用了一个名为“sender”的变量,UIView使用该变量来跟踪调用它的UIVC。然后,我可以进行各种逻辑操作,知道父级的大小,将视图添加为子视图,而无需明确说明。

这是最好的方法吗?不,它破坏了MVC,它没有将UI与功能明确分开,但是使用起来也更加方便和容易。

您可以决定在UIView中添加按钮或操作,这将影响其senderVC。

func openWebViewController(#URL: NSURL) {
    var webViewController = SVModalWebViewController(URL: URL)
    senderVC.presentViewController(webViewController, animated: true, completion: nil)
}

这是我使用UIVC指针的样式的一个小示例,抱歉,它很快,但应该可以理解。

https://github.com/goktugyil/CozyLoadingActivity

10-05 21:18