我有一个有4个ViewControllers和4个NavigationController嵌入使用故事板的UITabBarViewControllers。我把按钮作为左导航项目在所有4个ViewControllers,这将动画编程创建的UIView如下面的截图。

现在这里的问题是,我必须在所有4个ViewControllers中编写相同的代码。如果将来我需要进行重大更改,我将不得不更改所有ViewControllers中的代码。我不知道如何解决这个问题?对此最好的解决方案是什么?这是不可行的编码方式。而且我是iOS开发的新手,所以在解释时请具体一点。感谢您的阅读。
发布于 2016-04-02 15:16:34
您需要创建一个由所有其他视图控制器继承的BaseViewController。您还可以在BaseViewController中添加所有其他视图控制器中都可用的必需方法。
例如:
这将是所有其他类的超类。
MenuBaseViewController.h
————————————————————————————
@interface MenuBaseViewController : UIViewController
//declare properties and methods here
- (void)showMenu;
- (void)hideMenu;
@end
MenuBaseViewController.m
————————————————————————————
@implementation MenuBaseViewController
//implement methods here
- (void)showMenu {
//logic for showing menu
//probably you need to set rootViewController what is selected.
//You can create method for setting root view controller in AppDelegate
}
- (void)hideMenu {
//logic for hiding menu
}
@end
OneViewController.h
————————————————————————————
@interface OneViewController : MenuBaseViewControlle
//declare properties and methods here
@end
OneViewController.m
————————————————————————————
@implementation MenuBaseViewController
//implement methods here
//you can call showMenu, hideMenu to show/hide menu
@end同样,您需要在所有其他视图控制器中继承MenuBaseViewController,并调用showMenu/hideMenu方法来显示或隐藏菜单。
发布于 2016-04-02 15:28:12
你可以有一个像SuperCommonVC这样的超类,并编写所有4个控制器都具有的所有通用功能。
例如:超级常见
@interface SuperCommonVC:UIViewController
{
}
@end现在,您只需要将SuperCommonVC扩展到所有4个控制器,如
例如: VC1
@interface VC1:SuperCommonVC
{
}
@end这只是一个简单的继承。现在,您可以将SuperCommonVC的所有功能添加到您的VC1和其他您想要的功能中。
发布于 2016-04-02 15:35:18
我也面临着同样的问题。我用一些步骤解决了我的问题。
以下是解决您问题的步骤。
UINavigationController(初始视图控制器)的rootViewController。UIViewController而不是UINavigationController.执行上述更改后,您的问题将得到解决。
https://stackoverflow.com/questions/36370344
复制相似问题