Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 我应该为弹出菜单使用单独的UIViewController吗?_Ios_Uiview_Uiviewcontroller - Fatal编程技术网

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

Ios 我应该为弹出菜单使用单独的UIViewController吗?,ios,uiview,uiviewcontroller,Ios,Uiview,Uiviewcontroller,一个相当理论或抽象的问题 我有一个视图控制器,我们把它叫做viewControllerA,显然它有一个视图。当显示视图时,如果用户按下特定按钮,将出现一个弹出菜单,就像一排按钮一样。用户可以按下弹出菜单中的按钮,转换到由另一个视图控制器控制的另一个视图 我应该有一个单独的视图控制器来处理/管理弹出式菜单,还是应该简单地将弹出式菜单实现为一个由同一视图控制器(即viewControllerA)控制的视图 非常感谢每种方法的理由和反对理由。我是否应该有一个单独的视图控制器来处理/管理弹出菜单 我相信

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

我有一个视图控制器,我们把它叫做viewControllerA,显然它有一个视图。当显示视图时,如果用户按下特定按钮,将出现一个弹出菜单,就像一排按钮一样。用户可以按下弹出菜单中的按钮,转换到由另一个视图控制器控制的另一个视图

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

非常感谢每种方法的理由和反对理由。

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

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

您将获得:

具有单一职责的结构良好的文件 更容易测试和调整两个元件 我是否应该简单地将弹出菜单实现为由同一视图控制器控制的视图

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

违反法律。 简单-意味着您将有两个不同的视图,它们的生命周期在一个控制器中管理,这将变得更加困难 最有可能的是大型视图控制器
如果您不使用任何特定的体系结构模式,也许您应该看看。

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

步骤1:在情节提要上创建一个新的UIViewController,并创建一个与之关联的类

第二步:你说点击弹出窗口必须显示的按钮后,在第一个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

将类复制到您的项目中,它将起作用