如何为uitabbarcontroller的所有视图控制器使用公共类?

时间:2016-04-02 07:13:19

标签: ios iphone uinavigationcontroller uitabbarcontroller xcode7

我有一个UITabBarViewControllers有4个ViewControllers,4个NavigationController嵌入在故事板中。我将按钮作为左侧导航项目放在所有4个ViewControllers中,它将以编程方式创建的UIView动画,如下面的屏幕截图所示。 enter image description here

现在的问题是我必须在所有4个ViewControllers中编写相同的代码。如果我将来需要做出重大改变,我将不得不在所有ViewControllers中更改代码。我不知道怎么解决这个问题?什么是最好的解决方案。这不是可行的编码方式。我是iOS开发的新手,所以在解释时要具体。谢谢你的阅读。

3 个答案:

答案 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)

我也面临同样的问题。我已经通过一些步骤解决了我的问题。

以下是解决问题的步骤。

  1. 使您的视图控制器显示在屏幕截图中(查看控制器         包含左视图和前视图控制器)为rootViewController         主UINavigationController(初始视图控制器)。

  2. 您的4个viewcontrollers不应为UIViewController         UINavigationController

  3. 执行上述更改后,您的问题将得到解决。