ios - 使用 Objective-C iOS 制作选项卡切换布局

标签 ios objective-c

这是大多数移动应用程序使用的常见设计模式

+-------------------------+
|         title           |
+-------------------------+
|                         |
|                         |
|                         |
|                         |
|                         |
|                         |
|        content          |
|                         |
|                         |
|                         |
|                         |
|                         |
+-------------------------+
| |tab1|   |tab2|  |tab3| |
+-------------------------+

主要思想是当用户按下 tab1 或 tab2 或 tab3 时内容会相应地改变。

我现在正在做的(使用代码而不是 Storyboard)是制作一个 ViewController 来显示内容和底部面板,并制作一个 UINavigationController 来显示标题

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];        
    ViewController *viewController = [[ViewController alloc] init];   
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:viewController];
    self.window.rootViewController = nav;
    [self.window makeKeyAndVisible];
}

当用户按下底部选项卡更改内容 View 时,同时使用 subviews 更改内容,但我发现在更改内容时我发现:

  • View 将不会以标题的高度正确开始。
  • 此外,我应该将所有逻辑都写在同一个 View Controller 中,这会导致代码困惑。

如何实现这样的布局?

最佳答案

看看UITabBarController ,一个默认组件,负责在屏幕底部显示选项卡图标并自动管理选项卡之间的转换。每个选项卡也是一个独立的 View Controller ,因此您的代码更有条理。对于标题,您可以使用 UINavigationController 作为每个要有标题栏的选项卡的根 Controller

看看this answer获取分步指南。

关于ios - 使用 Objective-C iOS 制作选项卡切换布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45893319/

相关文章:

ios - 如何在导航堆栈中插入一个新的 View Controller 然后弹出它?

ios - 应用程序在后台时深层链接不起作用?

ios - 如何解决多个带有分隔数据的NSURLconnection

c# - 在 Xamarin iOS 中调整 UIView 大小

ios - UITableViewCell 内的 UICollectionView

objective-c - 有没有办法在浏览器上将 Cocoa 应用程序作为工作表打开?

objective-c - 每五分钟检查一次远程数据库上的数据 ios

iphone - 在 Objective-C 中消除参数名称与实例变量名称歧义的良好做法

ios - 如何让动画在 SwiftUI 的 ScrollView 中工作? SwiftUI 中的 Accordion 风格动画

iphone - IOS 中是否存在用于 UI 控件自动化的现有库