gpt4 book ai didi

iphone - pushViewController 不工作

转载 作者:行者123 更新时间:2023-11-28 18:14:27 26 4
gpt4 key购买 nike

我对 Objective-C 和 iPhone 编程还很陌生,所以如果这是一个新手问题,我深表歉意。我有一个简单的应用程序,需要从一个 View 转到另一个 View 。第一个 View 是 UIViewController。我在 IB 中设置了 xib 文件(即将一些按钮拖到窗口上)并连接了所有按钮(它们都有效)。然后我创建了另一个 xib 文件和类(也是一个 UIViewController)并将它们连接起来。在第一个 View 中按下按钮时,我想加载第二个 View 。这是应该推送 View 的代码:

-(IBAction)createAccount:(id)sender{
CreateAccountViewController*acctView = [[CreateAccountViewController alloc] initWithNibName:@"CreateAccount" bundle:nil];
[self.navigationController pushViewController:acctView animated:YES];
[acctView release];
}

但这没有任何作用。当我将 print 语句放入 createAccount 方法时,这些语句被打印出来(我可以多次单击该按钮并且它永远不会崩溃)但是 acctView 永远不会被按下。当我打印出 self.navigationController 的值时,它返回 null。它甚至更奇怪,因为如果我以模态方式呈现 acctView,它就会起作用。

-(IBAction)createAccount:(id)sender{
CreateAccountViewController*acctView = [[CreateAccountViewController alloc] initWithNibName:@"CreateAccount" bundle:nil];
[self presentModalViewController:acctView animated:YES];
[acctView release];

这工作得很好,但我不想以模态方式使用 View 。我完全迷失在这里。在过去的几个小时里,我看到很多帖子说要用 UINavigationController 做一些事情并将其连接到我的 View ,但我该怎么做呢?任何帮助是极大的赞赏!谢谢。

最佳答案

您似乎还没有为您的应用创建 UINavigationController。

最好的办法是从头开始使用一个新的 Xcode 项目,注意选择一个基于导航的应用程序。通过这种方式,您将获得几乎所有已为您设置的内容。

如果您不喜欢这种方法,您可以通过编程方式创建您的 UINavigationController。 Here您会找到相关的教程。

如果您更喜欢更直接的说明,请看这里:

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

MainPageDialog *overviewViewController = [[MainPageDialog alloc] initWithNibName:@"MainPage" bundle:nil];
self.navigation = [[[UINavigationController alloc] initWithRootController:overviewViewController] autorelease];
[overviewViewController release];

[window addSubview:[navigation view]];
[self.window makeKeyAndVisible];

return YES;
}

self.navigation 是您的 appDelegate 中的一个保留属性。

编辑:

这个答案很旧,因此更新:

  1. 如果您使用的是 ARC,则应该使用 strong(相对于 retain)属性,并且不需要 autorelease;

  2. 如果您的目标是 iOS > 4.0(上述观点也暗示了这一点),您可以使用 UIWindow 中的 rootViewController 属性并说:

     MainPageDialog *overviewViewController = [[MainPageDialog alloc] initWithNibName:@"MainPage" bundle:nil];
    self.window.rootViewController = [[[UINavigationController alloc] initWithRootController:overviewViewController] autorelease];
    [overviewViewController release];

    [window addSubview:[self.window.rootViewController view]];
    [self.window makeKeyAndVisible];

    无需任何 navigation 属性。

关于iphone - pushViewController 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6635773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com