具有自定义视图的iOS MVC实现

具有自定义视图的iOS MVC实现,ios,model-view-controller,custom-view,Ios,Model View Controller,Custom View,当视图很简单时,它们的iAction和iOutlet位于viewcontroller中,viewcontroller指定要加载的各个模型,并且在准备模型时通知viewcontroller 由于我的项目包含每个viewcontroller的许多自定义视图,我希望在自定义视图本身中实现操作,并从控制器(viewcontroller)设置数据。 我应该能够在iPhone和iPad上使用相同的控制器和型号,只有UI发生变化 我关心的是如何在模型更改时将数据从视图传递到viewcontroller并在视图

当视图很简单时,它们的iAction和iOutlet位于viewcontroller中,viewcontroller指定要加载的各个模型,并且在准备模型时通知viewcontroller

由于我的项目包含每个viewcontroller的许多自定义视图,我希望在自定义视图本身中实现操作,并从控制器(viewcontroller)设置数据。 我应该能够在iPhone和iPad上使用相同的控制器和型号,只有UI发生变化

我关心的是如何在模型更改时将数据从视图传递到viewcontroller并在视图上显示数据


是否有人建议我在视图之间传递数据viewcontroller(controller)模型?

不要使用不同的自定义视图,请尝试使用UIViewController,然后使用viewcontroller的视图来显示您的UI。此外,这还将确保您能够在视图和控制器之间高效地进行通信,而不会产生混淆。

为此,我使用委托设计模式。看起来是这样的:

MyView.h

@protocol MyViewDelegate <NSObject>
- (void)customViewDidSomething;
@end

@interface MyView : UIView

@property (nonatomic, assign) id<MyViewDelegate> delegate

@end
MyViewController.h

#import "MyView.h"

// ViewController has to implement the protocol
@interface MyViewController <MyViewDelegate>

@property (nonatomic, retain) IBOutlet MyView myView;

谢谢。它帮助了我。
#import "MyView.h"

// ViewController has to implement the protocol
@interface MyViewController <MyViewDelegate>

@property (nonatomic, retain) IBOutlet MyView myView;
- (void)viewDidLoad { // Set the delegate somewhere
   _myView.delegate = self
}

- (void)customViewDidSomething {
   // Ok VC is aware that something happened
   // Do something (tell subview to do something ?)
}