0

ViewControllers のシステムをセットアップし、それらの間を移動しようとしています。DefaultViewControllerと の間を移動しようとしていCreateViewControllerます。私は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
4

1 に答える 1

1

ナビゲーションコントローラーを使用して、ビューコントローラーを押すと、ポップして閉じる必要があります

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

コントローラインスタンスの必要はありませんNavControllerは基本的にスタックであり、ポップするとスタックの一番上から削除され、プッシュされた場所から前のViewControllerに移動します。

于 2013-02-24T20:41:11.013 に答える