gpt4 book ai didi

ios - 在 segue 弹出后从 PresentingViewController 调用方法

转载 作者:行者123 更新时间:2023-11-28 23:24:18 25 4
gpt4 key购买 nike

我的项目中有两个 View Controller ViewControllerSecondViewController 并且我的 ViewController 有一个按钮,它执行一个 popover segue 到 SecondViewController 然后在我的 SecondViewController 中我有一个按钮,我想用它来调用 ViewController 的方法,我认为可以使用 [self presentingViewController] 但该指针设置为 nil 所以我不太确定如何在 SecondViewController 之后调用第一个 ViewController 中的方法弹出框。

这是我的 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

我的界面 enter image description here那么关于如何在 segue 之后在 SecondViewController 中调用 tobecalledfromseguepopover 有什么想法吗? SecondViewCOntroller 还有办法知道它是从 segue 弹出窗口调用的吗?

最佳答案

通常的事情是委托(delegate)架构。为弹出窗口提供一个 delegate 属性,并在 prepareForSegue 中将其设置为 self。现在弹出窗口知道在哪里可以找到第一个 View Controller 。

这通常与协议(protocol)结合使用,以便弹出窗口知道要调用的方法的名称,而不必担心第一个 View Controller 的类,但这部分并不重要,尤其是在 Objective C 中。

关于ios - 在 segue 弹出后从 PresentingViewController 调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59095169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com