iPhone导航返回button

我有问题的后退button不显示在SettingsViewController。 导航栏在按下视图时显示,但没有后退button。

我在一个视图控制器里面创build了这个控件,它不是一个导航控制器。 任何想法或build议在这里实际发生的事情。

- (void)viewDidLoad { self.title = @"Settings"; } - (IBAction)showSettingsModal:(id)sender { SettingsViewController *settingsViewController = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil]; UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:settingsViewController] autorelease]; [self presentModalViewController:navController animated:YES]; [settingsViewController release]; } 

您正在创build一个新的导航堆栈。 您将需要添加自己的“后退”button,并将其操作设置为调用VC上的委托方法,以解除该方法。

更新:似乎有很多关于在哪里以及如何解雇ModalViewControllers混淆。 在大多数情况下,做错事是从Modal VC本身调用Dismiss方法,如果您希望父母在解雇时采取行动。 相反,使用委派。 这是一个简单的例子:

ModalViewController.h:

 @protocol ModalViewControllerDelegate -(void)dismissMyModalVC; @end @interface ModalViewController : UIViewController { id < ModalViewControllerDelegate > delegate; } @property (nonatomic, retain) id < ModalViewControllerDelegate > delegate; // The rest of your class properties, methods here 

ModalViewController.m

 @synthesize delegate; 

 // Put in the Method you will be calling from that Back button you created [delegate dismissMyModalVC]; 

CallingViewController.h:

 #import "ModalViewController.h" @interface CallingViewController : UIViewController <ModalViewControllerDelegate> // Rest of class here 

CallingViewController.m:

 ModalViewController *mvc = [[ModalViewController alloc] initWithNibName:@"ModalViewController" bundle:nil]; mvc.delegate = self [self presentModalViewController:mvc animated:YES]; 

 // The ModalViewController delegate method -(void)dismissMyModalVC { // Dismiss the ModalViewController that we instantiated earlier [self dismissModalViewControllerAnimated:YES]; 

这样VC就会从实例化的控制器中被正确解除。 该委托方法可以被修改,以传递对象(例如,当你完成login用户等)

SettingsViewController没有后退button,因为它位于堆栈的底部。 如果你想要一个button来消除模式对话框,你将不得不自己添加它。

你可以试试这个

 UIBarButtonItem * backButton = [[UIBarButtonItem alloc]initWithTitle:@"Back"style:UIBarButtonItemStylePlain target:self.navigationItem.backBarButtonItem action:@selector(dismissModalViewControllerAnimated:)]; 

您正在将您的新控制器作为模态视图控制器。 模态控制器呈现其最高层。 你应该:

  [self.navigationController pushViewController:navController animated:YES]; 

将视图控制器推入堆栈,然后您将看到后退button。

在呈现视图控制器时阅读Apple文档: https : //developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html

编辑没有看到调用视图控制器不是导航控制器的一部分。 在这种情况下,您将不得不手动创build返回button,并将其设置为左栏导航项目。