【问题标题】:How to code a back button on the a navigation bar using a bar button item如何使用栏按钮项目在导航栏上编写后退按钮
【发布时间】:2012-03-04 02:17:46
【问题描述】:

我在编写按钮以转到上一页时遇到问题。如果我做了同样的事情但稍微改变一下它会反过来工作,我能够做到这一点以进入下一页。不幸的是,我遇到了很多我无法解决的错误,因为它不允许我使用发布功能。 这是帮助它正常工作到下一页的代码:

#import "ViewController.h"

@implementation ViewController

-(IBAction)btnClicked:(id) sender
{
    //add the view of the view controller to the current View---
    if (menuView==nil) {
        menuView = 
        [[MenuView alloc] initWithNibName:@"MenuView"
                                   bundle:nil];
    }
    [self.view addSubview:menuView.view];

}
-(void)dealloc {
 [menuView release];
 [super dealloc];
}

我该怎么做才能让后退按钮转到上一页。

【问题讨论】:

  • 您是否使用UINavigationController 来控制堆栈?
  • 我不是。我正在使用 UIViewController。如果这是一个愚蠢的问题,我很抱歉保罗,但我可以同时使用两个控制器吗?

标签: iphone ios5 xcode4.2


【解决方案1】:

很简单,用这个:

-(IBAction)back:(id) sender
{
    [menuView.view removeFromSuperview];
}

但是,我建议不要将addSubview: 用于许多视图,因为这样做会很复杂。按照@Paul.s 的建议使用UINavigationController

【讨论】:

    【解决方案2】:

    您这样做的方式并不完全正确,我建议您阅读一些内容以熟悉 iOS 编程。

    您的程序结构应该是:创建一个导航控制器 (2) 来管理视图控制器堆栈,为其提供一个 viewController (1) 作为它的根。

    // AppDelegate.m
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    
        // 1
        FirstViewController *firstViewController = [[FirstViewController alloc] init];
    
        // 2
        UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:firstViewController];
        [firstViewController release]; firstViewController = nil;
    
        self.window.rootViewController = navigationController;
        [navigationController release]; navigationController = nil;
    
        [self.window makeKeyAndVisible];
        return YES;
    }
    

    这将在UINavigationController 中显示您的第一个视图控制器。 UINavigationController 负责管理 UIViewController 的堆栈,并为您提供 UI 以在堆栈中向下导航,并在正确的时间调用 UIViewController 上的所有适当的演示相关方法,例如viewDidLoad。您应该查看The View Controller Programming Guide 以获取大量信息

    然后在您的第一个视图控制器中,您可以执行以下操作来响应按钮:

    - (IBAction)buttonClicked:(id)sender;
    {
        SecondViewController *secondViewController = [[SecondViewController alloc] init];
    
        [self.navigationController pushViewController:secondViewController animated:YES];
        [secondViewController release]; secondViewController = nil;
    }
    

    这会创建一个新的视图控制器并将其推入堆栈。

    【讨论】:

    • 哦,好的。我将返回并首先使用 UINavigation 控制器重新创建我的文件。谢谢保罗。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多