gpt4 book ai didi

ios - 如何为标识符使用 PerformSegue

转载 作者:行者123 更新时间:2023-11-29 00:15:09 24 4
gpt4 key购买 nike

我刚接触 iOS 和 Objective-C。我正在学习如何使用 Segue,尤其是 Unwind Segue。

在阅读时,我对“shouldPerformSegueForIdentifier”和“performSegueForIdentifier”的用法感到有点困惑。

我创建了一个包含两个“ViewController”、“ViewController.m”的示例,如“VC_1”和“ServiceViewController”下面发布的代码所示

我的问题是:

-何时以及如何使用“performSegueForIdentifier”

-何时以及如何使用“shouldIPerformSegueForIdentifier”?

VC_1:

#import "ViewController.h"
#import "ServiceViewController.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.
}

-(IBAction)btnStartService:(UIButton *)sender {
if (sender.tag == 1) {
NSLog(@"CLICKED");

[self performSegueWithIdentifier:@"seguePassInterval" sender:(id)
sender];
}
}

-(IBAction)btnExitApp:(UIButton *)sender {
NSLog(@"EXIT_CLICKED");

}



- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"seguePassInterval"]) {
((ServiceViewController*)segue.destinationViewController).data = @"testData"; //passing data to destinationViewController of type "TestViewController"
NSLog(@"SEGUE");
}

}


@end

img

enter image description here

最佳答案

prepareForSegue 方法在 segue 执行之前调用,并允许在 ViewController 之间传递数据等等,您可以通过示例检查您的标识符是否segue 是“XxX”并传递一些数据,或者如果是“YYY”则调用方法

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{
if ([segue.identifier isEqualToString:@"seguePassInterval"]) {
((TestViewController*)segue.destinationViewController).data = @"testData"; //passing data to destinationViewController of type "TestViewController"
NSLog(@"SEGUE");
}
}

方法performSegueWithIdentifier 用于使用他的标识符执行segue,你可以在需要时执行segue

最后,shouldPerformSegue 用于避免在您的应用处于某种状态时执行转场,例如,如果您还没有 destinationViewController 数据,您可以返回false 直到你得到那个

希望对你有帮助

关于ios - 如何为标识符使用 PerformSegue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45467548/

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