首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何对uitabbarcontroller的所有视图控制器使用公共类?

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

Stack Overflow用户
提问于 2016-04-02 15:13:19
回答 3查看 639关注 0票数 1

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

现在这里的问题是,我必须在所有4个ViewControllers中编写相同的代码。如果将来我需要进行重大更改,我将不得不更改所有ViewControllers中的代码。我不知道如何解决这个问题?对此最好的解决方案是什么?这是不可行的编码方式。而且我是iOS开发的新手,所以在解释时请具体一点。感谢您的阅读。

EN

回答 3

Stack Overflow用户

发布于 2016-04-02 15:16:34

您需要创建一个由所有其他视图控制器继承的BaseViewController。您还可以在BaseViewController中添加所有其他视图控制器中都可用的必需方法。

例如:

这将是所有其他类的超类。

代码语言:javascript
运行
复制
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方法来显示或隐藏菜单。

票数 0
EN

Stack Overflow用户

发布于 2016-04-02 15:28:12

你可以有一个像SuperCommonVC这样的超类,并编写所有4个控制器都具有的所有通用功能。

例如:超级常见

代码语言:javascript
运行
复制
@interface SuperCommonVC:UIViewController
{
}
@end

现在,您只需要将SuperCommonVC扩展到所有4个控制器,如

例如: VC1

代码语言:javascript
运行
复制
@interface VC1:SuperCommonVC
{
}
@end

这只是一个简单的继承。现在,您可以将SuperCommonVC的所有功能添加到您的VC1和其他您想要的功能中。

票数 0
EN

Stack Overflow用户

发布于 2016-04-02 15:35:18

我也面临着同样的问题。我用一些步骤解决了我的问题。

以下是解决您问题的步骤。

  1. 使你的视图控制器在屏幕截图中显示(视图控制器包含左视图控制器和前视图控制器)作为主UINavigationController(初始视图控制器)的rootViewController
  2. 你的4个视图控制器应该是UIViewController而不是UINavigationController.

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36370344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档