我应该为弹出菜单使用单独的UIViewController吗?

时间:2018-06-13 09:14:18

标签: ios uiview uiviewcontroller

一个相当理论或抽象的问题......

我有一个视图控制器(让它称之为viewControllerA)带有一个视图(显然)。在显示视图时,如果用户按下特定按钮,则会出现一个弹出菜单(想象一个按钮网格)。用户可以按弹出菜单中的按钮转换到另一个视图(由另一个视图控制器控制)。

我是否应该有一个单独的视图控制器来处理/管理弹出菜单,或者我应该只是"简单地说"将弹出菜单实现为由同一视图控制器(即viewControllerA)控制的视图?

非常感谢支持和反对每种方法的原因。

2 个答案:

答案 0 :(得分:1)

我应该有一个单独的视图控制器来处理/管理弹出菜单吗?

我相信,这是更好的选择。您可以在故事板上创建一个容器视图,该视图将具有一个更容易使用的单独控制器,然后是一个具有不同视图的大文件。

您将获得什么:

  1. 具有单一职责的结构良好的文件
  2. 更容易测试和调整两个元素
  3. 我应该“简单地”将弹出菜单实现为由同一视图控制器控制的视图吗?

    这种方法没有任何优势,因为它在我看来。 在这种情况下,您将:

    1. 违反single responsibility principle
    2. “简单地” - 意味着您将拥有2个不同的视图,其生命周期在一个控制器中管理(变得更难)
    3. 最有可能是Massive View Controller
    4. 如果您不使用任何特定的架构模式,也许您应该看看here

答案 1 :(得分:0)

是的,你可以使用UIViewController作为弹出窗口。

Step1 :在故事板上创建一个新的UIViewController并创建一个与之关联的类。

第2步:你说在点击Popup必须显示的按钮后,然后在第一个ViewController上按一个按钮并写下面的代码

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
PopupViewController *popupVC = [storyboard instantiateViewControllerWithIdentifier:@"popId"];

BIZPopupViewController *popupViewController = [[BIZPopupViewController alloc] initWithContentViewController:popupVC contentSize:CGSizeMake(300, 300)];

[self presentViewController:popupViewController animated:NO completion:nil];

它会在您的视图中将PopupViewController显示为弹出视图。

Here is the link for BIZpopViewController将课程复制到您的项目中,它会起作用。