2013-02-24 53 views
0

我想建立一個ViewControllers系統並在它們之間導航。我正在嘗試在DefaultViewControllerCreateViewController之間導航。我是iOS編程的新手,所以我很難解決這個問題。我主要嘗試使用Utility App模板中的代碼。如果有人能夠發現我的錯誤,那將會很棒!UINavigationController不返回

當我點擊取消按鈕時,達到日誌CreateViewController: cancel,但DefaultViewController: createViewControllerDidFinish不是。

這是相關代碼:

DefaultViewController.h

#import <UIKit/UIKit.h> 
#import <Social/Social.h> 
#import "CreateViewController.h" 

@interface DefaultViewController : UIViewController <CreateViewControllerDelegate, UIWebViewDelegate> { 
    ... 
} 

@property (strong, nonatomic) UIWebView *webView; 

- (IBAction)create:(id)sender; 

@end 

CreateViewController.h

#import <UIKit/UIKit.h> 
#import <Social/Social.h> 

@class CreateViewController; 

@protocol CreateViewControllerDelegate 
    - (void)createViewControllerDidFinish:(CreateViewController *)controller; 
@end 

@interface CreateViewController : UIViewController <UIWebViewDelegate> { 
    ... 
} 

@property (weak, nonatomic) id <CreateViewControllerDelegate> delegate; 

- (IBAction)cancel:(id)sender; 
- (IBAction)submit:(id)sender; 

@end 

DefaultViewController.m

#import "AppDelegate.h" 
#import "DefaultViewController.h" 

... 

@implementation DefaultViewController 

... 

#pragma mark - CreateViewController 

- (void)createViewControllerDidFinish:(CreateViewController *)controller { 
    NSLog(@"DefaultViewController: createViewControllerDidFinish"); 
    [self.navigationController dismissViewControllerAnimated:YES completion:nil]; 
} 

- (IBAction)create:(id)sender { 
    CreateViewController *vc2 = [[CreateViewController alloc] init]; 
    [self.navigationController pushViewController:vc2 animated:YES]; 
} 

@end 

CreateViewController.m

#import "AppDelegate.h" 
#import "CreateViewController.h" 

... 

@implementation CreateViewController 

... 

#pragma mark - Actions 

- (IBAction)cancel:(id)sender { 
    NSLog(@"CreateViewController: cancel"); 
    [self.delegate createViewControllerDidFinish:self]; 
} 

- (IBAction)submit:(id)sender { 
    [webView stringByEvaluatingJavaScriptFromString:@"EntryCreate.submit();"]; 
} 

@end 

回答

1

使用導航控制器,當你推你必須彈出一個視圖控制器駁回

- (IBAction)cancel:(id)sender { 
    NSLog(@"CreateViewController: cancel"); 
    [self.navigationController popViewControllerAnimated:YES]; 
} 

無需控制器實例導航控制器基本上是一個堆棧,當你彈出時,它會從堆棧頂部移除並移動到前一個視圖控制器從哪裏推

快樂編碼:)

相關問題