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

时间:2014-07-17 09:09:02

标签: ios model-view-controller custom-view

当视图很简单时,它们的IBActions和IBoutlet在viewcontroller中,viewcontrollers分配要加载的相应模型,并在准备好模型时通知viewcontroller。

由于我的项目包含许多每个viewcontroller的自定义视图,我想在自定义视图中实现操作并从控制器(ViewController)设置数据。 我应该能够为iPhone和iPad使用相同的控制器和模型,只有UI更改。

我担心如何将数据从视图传递到viewcontroller并在模型更改时在视图中显示数据?

任何人都可以建议我在视图之间传递数据< ---> viewcontroller(控制器)< --->模型?

2 个答案:

答案 0 :(得分:2)

为此,我使用Delegate design-pattern。它看起来像这样:

<强> MyView.h

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

@interface MyView : UIView

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

@end

<强> MyView.m

- (void)userDidSomething {
   [_delegate customViewDidSomething];
}

MyViewController.h

#import "MyView.h"

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

@property (nonatomic, retain) IBOutlet MyView myView;

<强> MyViewController.m

- (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 ?)
}

答案 1 :(得分:0)

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