我有一个UITabBarViewControllers有4个ViewControllers,4个NavigationController嵌入在故事板中。我将按钮作为左侧导航项目放在所有4个ViewControllers中,它将以编程方式创建的UIView动画,如下面的屏幕截图所示。
现在的问题是我必须在所有4个ViewControllers中编写相同的代码。如果我将来需要做出重大改变,我将不得不在所有ViewControllers中更改代码。我不知道怎么解决这个问题?什么是最好的解决方案。这不是可行的编码方式。我是iOS开发的新手,所以在解释时要具体。谢谢你的阅读。
答案 0 :(得分:0)
您需要创建一个由所有其他视图控制器继承的BaseViewController。您可以在BaseViewController中添加所有其他视图控制器中可用的必需方法。
EG。
这将成为所有其他课程的超级课程。
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方法来显示或隐藏菜单。
答案 1 :(得分:0)
您可以拥有一个超级类SuperCommonVC
,并编写所有4个控制器都具有的所有常用功能。
Ex:超级普通
@interface SuperCommonVC:UIViewController
{
}
@end
现在你只需将SuperCommonVC
扩展到所有4个控制器,如
Ex:VC1
@interface VC1:SuperCommonVC
{
}
@end
这只是简单的继承。现在,您可以根据需要为您的VC1和其他人提供SuperCommonVC的所有功能。
答案 2 :(得分:0)
我也面临同样的问题。我已经通过一些步骤解决了我的问题。
以下是解决问题的步骤。
使您的视图控制器显示在屏幕截图中(查看控制器
包含左视图和前视图控制器)为rootViewController
主UINavigationController
(初始视图控制器)。
您的4个viewcontrollers不应为UIViewController
UINavigationController
。
执行上述更改后,您的问题将得到解决。