簡體   English   中英

iPhone導航后退按鈕

[英]iPhone Navigation Back Button

我遇到后退按鈕未顯示在SettingsViewController上的問題。 按下視圖時,導航欄會顯示,但沒有后退按鈕。

我在視圖控制器(不是導航控制器)中創建此控件。 關於這里實際發生的任何想法或建議。

- (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];    
}

您正在創建一個新的導航堆棧。 您將需要添加自己的“后退”按鈕,並將其操作設置為調用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會從實例化它的控制器中正確退出。 可以將該委托方法修改為也傳遞對象(例如,完成用戶登錄后等)

SettingsViewController沒有后退按鈕,因為它位於堆棧的底部。 如果您想要一個按鈕來關閉模式對話框,則必須自己添加它。

你可以試試這個

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

您正在將新控制器顯示為模態視圖控制器。 模態控制器呈現其最頂層。 你應該:

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

將View Controller推入堆棧,然后您將看到Back按鈕。

閱讀有關介紹視圖控制器的Apple文檔: https : //developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html

編輯沒有看到調用視圖控制器不是導航控制器的一部分。 在這種情況下,您將必須手動創建后退按鈕,並將其設置為左欄導航項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM