嵌入导航控制器

2024-03-10

我刚刚将 Xcode 从 4.2 更新到 4.3.3,但我不断遇到问题 是否可以在单视图应用程序中添加导航控制器,因为当我尝试将导航控制器嵌入到控制器中时,什么也没有发生。我希望有两个视图控制器通过按钮连接到第二个控制器,并通过导航栏连接到第一个视图控制器。

我想不出任何其他方式来连接视图控制器请帮助我 有任何想法吗。


  1. 如果您不想添加导航控制器,您可以使用以下命令在现有视图控制器之间进行转换presentViewController从第一个转到第二个,并且dismissViewControllerAnimated回来。

  2. 假设您使用的是 NIB(否则您只需使用 Storyboard 的 embed 命令),如果您想添加一个与 NIB 一起使用的导航控制器,您可以相应地更改您的应用程序委托。

因此,您可能有一个应用程序委托,其内容如下:

//  AppDelegate.h

#import <UIKit/UIKit.h>

@class YourViewController;

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) YourViewController *viewController;

@end

更改此设置以添加导航控制器(您可以在此处删除之前对主视图控制器的引用):

//  AppDelegate.h

#import <UIKit/UIKit.h>

//@class YourViewController;

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

//@property (strong, nonatomic) YourViewController *viewController;
@property (strong, nonatomic) UINavigationController *navigationController;

@end

然后,在您的应用程序委托的实现文件中,您有一个didFinishLaunchingWithOptions这可能是这样说的:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.

    self.viewController = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];
    self.window.rootViewController = self.viewController;

    [self.window makeKeyAndVisible];
    return YES;
}

您可以将其更改为:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.

    //self.viewController = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];
    //self.window.rootViewController = self.viewController;

    YourViewController *viewController = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
    self.window.rootViewController = self.navigationController;

    [self.window makeKeyAndVisible];
    return YES;
}

完成此操作后,您现在可以使用 NIB 视图控制器从一个 NIB 视图控制器导航到另一个 NIB 视图控制器pushViewController并返回popViewControllerAnimated。在你的viewDidLoad您还可以使用self.title = @"My Title";命令控制视图导航栏中显示的内容。您可能还需要更改 NIB 中的“顶部栏”属性以包含导航栏模拟指标,以便您可以布局屏幕并清楚地了解其外观:

显然,如果您有一个非 ARC 项目,那么带有视图控制器的 alloc/init 的那些行也应该有一个autorelease,也是(当您查看应用程序委托时,这一点会很明显)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入导航控制器 的相关文章

随机推荐

  • Visual Studio 2022 中是否支持 .editorconfig?

    我打开 Visual Studio 2022 并创建一个新的空解决方案 我添加一个 editorconfig文件包含 root true end of line lf indent style space indent size 3 tab
  • UITextField 在视图出现后丢失firstResponder

    我有一个UIPageViewController 一个页面有一个按钮 另一页有一个UITextField有一个按钮 当页面滚动到带有字段的视图时 我希望它becomeFirstResponder并打开键盘 发生的情况如下 I call se
  • Outlook iCal 会议邀请说明问题

    我正在发送iCal event邀请使用php 一切都以正确的方式显示RVSP按钮正确显示 但description is cutting down after first line 例如 如果我的描述是 The problem occurs
  • JDK 1.6 中“vm 线程”的作用是什么[重复]

    这个问题在这里已经有答案了 我们在客户的系统中看到该线程的大量活动 因此想知道可能会发生什么 有链接 信息 教程吗 P S 这种情况发生在带有 JDK 1 6 0 23 的 Solaris 10 上 该线程将为您提供一些继续操作的步骤 如果
  • 了解 z3 模型

    Z3Py 片段 x Int x fun Function fun IntSort IntSort IntSort phi ForAll x fun x x x print phi solve phi 永久链接 http rise4fun c
  • 关闭申请

    关闭 C 应用程序时的最佳实践是什么 我读到您可以使用 Environment Exit 0 or Application Exit 但有什么区别呢 此外 关于Environment Exit 0 我以前在使用Java时使用过退出代码 但从
  • Javascript - 在另一个数组中插入一个数组

    将一个数组插入另一个数组的更有效方法是什么 a1 1 2 3 4 5 a2 21 22 newArray a1 insertAt 2 a2 gt 1 2 21 22 3 4 5 如果 a2 数组很大 从性能角度来看 使用 splice 迭代
  • 有没有办法触发Maven Appengine Devserver自动刷新静态文件?

    最新版本的maven插件已经实现了每5秒更新一次代码 这是一个很大的进步 但除非我配置错误 否则它似乎不会获取静态文件更改 例如连接到 appengine 代码的正在进行的 Javascript 有什么方法可以改变这种行为 还是我只需要等待
  • 添加 VirtualHost 失败:访问禁止错误 403 (XAMPP) (Windows 7)

    我已经在 Windows 7 上运行了 XAMPP 安装 一旦我将 VirtualHost 添加到 httpd vhosts conf 两者都是 常规 http localhost和新的dropbox local不工作 这是我添加到我的ht
  • 在 DAX 中进行测量以计算仅适用于 Power BI 的选定月份的年初至今

    如何构建 DAX 度量来计算特定月份的 YTD 值总和 这里我们有按月份分组的事实表 FactTable 填充了实际数据和预测数据 了解实际结束时间的唯一方法是 截止日期 列 年初至今 中的信息 在表 截止日期 列 YTD 结束 中 这是一
  • 如何使用 Apps 脚本使用预设选项填充 HTML 表列之一?

    我试图让这个表显示每个表行的选项 但我不太明白 我想我会把它设置在第二个for loop 但我是新手html并且无法前进
  • 在 ggplot2 中对 x 轴日期值进行排序

    我有以下数据集 正如你所看到的 我有两周的一些定量数据 我想对它们的日子进行比较 即 星期一 09 和星期一 10 week date day n chr date chr int 1 Week 09 2016 02 29 Monday 5
  • 如何在matlab中隐藏轴和刻度而不隐藏其他所有内容

    我在 matlab UI 中将图像绘制到轴上 但我不希望轴和刻度线可见 如何防止这种情况发生 以及在哪里进行此调用 我这样做 imagesc myImage parent handles axesInGuide axis off 这是你想要
  • 如何在 Sinatra 代码中发出 POST 请求?

    单击表单中的按钮将发送一个 POST 请求 由以下代码段处理 post register do send post request to http www randomsite com parse response do something
  • JS async/await - 为什么await需要异步?

    为什么使用await需要声明其外部函数async 例如 为什么这个 mongoose 语句需要它所在的函数来返回一个承诺 async function middleware hostname done try let team await
  • MPMediaItem 未使用 MPMediaItemPropertyAssetURL 在 AVAudioPlayer 中播放

    我有这段代码 用于查找并播放 MPMediaItem MPMediaPropertyPredicate predicate MPMediaPropertyPredicate predicateWithValue self persisten
  • 注册自定义单元格时不调用prepareForSegue

    这不是 Segue 标识符拼写错误或类似问题 方法prepareForSegue当我点击表视图控制器中的单元格时 实际上并没有被调用 如果我点击单元格 则仅当我添加新单元格时 控制语句之前的日志语句才不会记录 void prepareFor
  • 1/252 = 0 在 C# 中?

    我正在做计算 在调试时我发现了这个 double num 1 252 当我调试它时 数字设置为零 0 是否有一个原因 我想将其作为实际计算 Thanks 是 该计算正在执行integer算术 尝试这个 double num 1 0 252
  • JavaScript Chrome 扩展 - 从弹出窗口到内容创建新选项卡后发送消息

    在我的扩展的 popup js 中 我想创建一个新选项卡并发送一条消息 content js 必须监听消息并回答 但它不起作用 我尝试了很多在其他问题中找到的解决方案 但没有成功 这是我的文件 Manifest json name Stam
  • 嵌入导航控制器

    我刚刚将 Xcode 从 4 2 更新到 4 3 3 但我不断遇到问题 是否可以在单视图应用程序中添加导航控制器 因为当我尝试将导航控制器嵌入到控制器中时 什么也没有发生 我希望有两个视图控制器通过按钮连接到第二个控制器 并通过导航栏连接到