0

我想用 取消第二个视图控制器UIBarButtonItem,但我只是没有得到正确的代码。请帮忙。

视图控制器.h

#import <UIKit/UIKit.h>
#import "SecondViewController.h"

@interface ViewController : UIViewController <SecondViewControllerDelegate>
@end

视图控制器.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.destinationViewController isKindOfClass:[SecondViewController class]]) {
        SecondViewController *vc2 = segue.destinationViewController;
        vc2.delegate = self;
    }
}

-(void)dismissViewController
{
    NSLog(@"dismissed");
    [self dismissViewControllerAnimated:YES completion:nil];
}
@end

第二视图控制器.h

#import <UIKit/UIKit.h>

@protocol SecondViewControllerDelegate <NSObject>

- (void) dismissViewController;

@end

@interface SecondViewController : UIViewController

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

- (IBAction)backBarButtonItemPressed:(UIBarButtonItem *)sender;
@end

BackbarButton 表示取消按钮

第二视图控制器.m

#import "SecondViewController.h"

@interface SecondViewController ()

@end

@implementation SecondViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)backBarButtonItemPressed:(UIBarButtonItem *)sender {
    [self.delegate dismissViewController];
}
@end
4

1 回答 1

2

你可以解雇secondViewController,我在你的代码中没有看到 Delegate 的含义

- (IBAction)backBarButtonItemPressed:(UIBarButtonItem *)sender {
    [self dismissViewControllerAnimated:true completion:nil];
}

如果你使用 show segue,并且你有一个带有这两个 ViewControllers 的 navigationController,使用

- (IBAction)dismiss:(id)sender {
   [self.navigationController popViewControllerAnimated:true];
}
于 2015-07-20T14:20:55.220 回答