【问题标题】:MVC in iOS with custom UIViewsiOS 中的 MVC 与自定义 UIViews
【发布时间】:2014-05-22 17:45:06
【问题描述】:

如何在 iOS 中创建自定义 UIView 及其控件?

假设我想要 Radio Streamer,只需要播放/暂停按钮和滚动条。还可以说我将为该流创建新模型(单例)。

如何处理视图和控制?我是创建 UIView 并向该 UIView 添加操作(IBOutlets),还是我还需要 ViewController?或者我应该只使用没有 UIView 的 ViewController + 模型?因为我看到他们总是说模型和视图永远不应该交流,所以我不认为只有 UIView 和动作在里面是个好主意......

我创建了模型(单例)和视图控制器(.xib,它是 320x50 的视图,带有播放/暂停和滚动条)。我已经在控制器中实现了模型和操作,现在当我想使用该控制器(所以无线电流媒体)时,我使用以下代码:

RadioPlayerViewController *controller = [[RadioPlayerViewController alloc] initWithNibName:@"RadioPlayerViewController" bundle:nil];
[controller.view setCenter:CGPointMake(CGRectGetMidX(self.view.bounds), 300)];
[self addChildViewController:controller];
[self.view addSubview:controller.view];

这是一个好的方法吗?

谢谢。

【问题讨论】:

    标签: ios objective-c model-view-controller uiview uiviewcontroller


    【解决方案1】:

    您所说和实现的方式是正确的,您已经使用 NSObject 类扩展模型类,在这里您创建了与模型类兼容的命名单例类

    现在关于目标 c 中的视图和控制器,这部分在目标 c 中与 Viewcontroller 结合,但如果您愿意,您可以分离视图表单视图控制器类

    如果您需要一些具有相关方法的控制器,并且需要从主父控制器中分离出来,并且需要作为可以使用此方法的单独组件,那么您所做的一切都很好,您可以在此处创建 RadioPlayerViewController。

    您还可以创建自定义视图,然后在视图控制器中添加此视图

    关于如何创建自定义视图,请参考此链接http://www.raywenderlich.com/1768/uiview-tutorial-for-ios-how-to-make-a-custom-uiview-in-ios-5-a-5-star-rating-view

    当您需要一些在许多屏幕中使用的可重用视图时使用此选项。

    您实现的方式是自定义组件的好方法,您可以在组件中进行更改并轻松修改它,而不会在父控制器中遇到任何问题。

    【讨论】:

    • 感谢您的回答,在 raywenderlich 上看到了该帖子,但在该教程中,其清晰的混合模型与视图总是被认为是坏事......
    • 是的,你是正确的模型,视图不是正确的方式。但如果我只在标签和图像中显示一些内容,那么我在自定义视图中创建图像视图和标签的属性并设置它们在带有模型对象的父控制器中。所以当时我只是创建自定义视图。但是如果我需要创建一些需要与方法分开工作的控制器,而不是你需要添加视图控制器的方式
    猜你喜欢
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 2011-12-12
    • 2014-09-08
    相关资源
    最近更新 更多