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

Viewcontroller.h

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

@interface ViewController : UIViewController <SecondViewControllerDelegate>
@end


Viewcontroller.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


Secondviewcontroller.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表示取消按钮

Secondviewcontroller.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

最佳答案

您可以在secondViewController中关闭,我在您的代码中看不到Delegate的含义

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


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

- (IBAction)dismiss:(id)sender {
   [self.navigationController popViewControllerAnimated:true];
}

10-08 08:52
查看更多