我正在使用情节提要并开发 iPhone 应用程序并使用导航控制器。
当我实现它时,我注意到它使用视图的名称而不是使用默认的“后退”文本,有没有办法强制它使用“后退”?
谢谢
我正在使用情节提要并开发 iPhone 应用程序并使用导航控制器。
当我实现它时,我注意到它使用视图的名称而不是使用默认的“后退”文本,有没有办法强制它使用“后退”?
谢谢
来自http://osmorphis.blogspot.com/2009/03/trapping-uinavigationbar-back-button.html
您可以在标准后退按钮上更改的唯一内容是文本。默认情况下,这是控制器的标题。您可以使用如下代码更改它:
[self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"New Title" style:UIBarButtonItemStyleBordered target:nil action:nil];
只需更换
initWithTitle:@"New Title"
和
initWithTitle:@"Back"
在提问之前尝试搜索。
似乎您可以将以下代码添加到调用向下钻取的控制器中,即主详细信息中的主控。
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
归功于 iPhoneGuy:iPhone Dev SDK
当您显示 时UINavigationController
,大概在应用程序的委托中,使应用程序的委托也成为导航控制器的委托。然后观察视图控制器被弹出和推送:
应用控制器.h
#import <UIKit/UIKit.h>
@interface AppController.h : NSObject
<UIApplicationDelegate, UINavigationControllerDelegate>
{
UIWindow *window;
UINavigationController *viewController;
}
/* MARK: Interface Outlets */
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *viewController;
@end
应用控制器.h
#import "AppController.h"
@implementation AppController.h
/* MARK: Init and Dealloc */
- (void)dealloc {
self.window = nil;
self.viewController = nil;
[super dealloc];
}
/* MARK: Interface Outlets */
@synthesize window, viewController;
/* MARK: Application Delegate */
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
assert(self.window != nil);
assert(self.viewController != nil);
self.viewController.delegate = self;
/* other initialization */
[self.window makeKeyAndVisible];
return YES;
}
/* MRK: Navigation Controller Delegate */
- (void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)vc
animated:(BOOL)animated
{
UIBarButtonItem *myItem = /* initialize */;
navigationController.topViewController.navigationItem.backBarButtonItem = nil;
navigationController.topViewController.navigationItem.backBarButtonItem = myItem;
}
@end
此外,您可以通过检查-[NSObject isKindOfClass:]
所需视图控制器的匹配来忽略自定义视图控制器。