【问题标题】:UINavigationController not returningUINavigationController 不返回
【发布时间】:2013-02-09 23:12:33
【问题描述】:

我正在尝试建立一个 ViewControllers 系统并在它们之间导航。我正在尝试在DefaultViewControllerCreateViewController 之间导航。我是 iOS 编程的新手,所以我很难弄清楚这一点。我主要尝试使用 Utility App 模板中的代码。如果有人能发现我的错误,那就太好了!

当我点击取消按钮时会到达日志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

【问题讨论】:

    标签: ios delegates uinavigationcontroller


    【解决方案1】:

    使用导航控制器,当您推送视图控制器时,您必须 pop 关闭

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

    不需要控制器实例 Nav Controller 基本上是一个堆栈,当您弹出它时,它会从堆栈顶部移除并移动到上一个视图控制器,从它被推送的位置。

    【讨论】:

      猜你喜欢
      • 2016-11-24
      • 1970-01-01
      • 1970-01-01
      • 2014-01-09
      • 2023-03-26
      • 2011-03-20
      • 2011-04-08
      • 1970-01-01
      • 2013-01-29
      相关资源
      最近更新 更多