2013-02-24 59 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]; 
} 

无需控制器实例导航控制器基本上是一个堆栈,当你弹出时,它会从堆栈顶部移除并移动到前一个视图控制器从哪里推

快乐编码:)

相关问题