0

我的项目中有两个视图控制器,ViewController并且SecondViewControllerViewController有一个按钮,它执行一个弹出框,SecondViewController然后在我的SecondViewController我有一个按钮,我想用它来调用一个方法ViewController,我认为它可以使用[self presentingViewController],但是那个指针是设置为零,所以我不太确定如何在弹出框后的第一个ViewController内部调用方法。SecondViewController

这是我的代码ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

- (IBAction)dosegue:(id)sender;
-(void)tobecalledfromseguepopover;
@end

ViewController.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

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

}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

}
-(void)tobecalledfromseguepopover{
    NSLog(@"Called from segue popover");
}

- (IBAction)dosegue:(id)sender {
    [self performSegueWithIdentifier:@"segueforpopup" sender:self];
}
@end

SecondViewController.h

#import <UIKit/UIKit.h>

#import "ViewController.h"
@interface SecondViewController : UIViewController
- (IBAction)returntocaller:(id)sender;


@end

SecondViewController.m


#import "SecondViewController.h"

@interface SecondViewController()

@end
@implementation SecondViewController

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


- (IBAction)returntocaller:(id)sender {
    [self dismissViewControllerAnimated:YES completion:^{
        ViewController* caller = (ViewController*)[self presentingViewController];
        if(caller!=nil){
            [caller tobecalledfromseguepopover];
        }else{
            NSLog(@"nil");
        }
    }];
}
@end

我的用户界面 那么关于在 segue 之后在此处输入图像描述 如何调用tobecalledfromseguepopover内部的任何想法?SecondViewController还有一种方法SecondViewCOntroller可以知道它是从 segue popover 中调用的吗?

4

1 回答 1

1

通常的事情是委托架构。为弹出框提供一个delegate属性并将其设置为self您的prepareForSegue. 现在弹出框知道在哪里可以找到第一个视图控制器。

这通常与协议相结合,以便弹出框知道要调用的方法的名称,而不必担心第一个视图控制器的类,但这部分并不重要,尤其是在 Objective C 中。

于 2019-11-28T19:35:25.757 回答