gpt4 book ai didi

objective-c - 从不同的类打开 ViewController

转载 作者:行者123 更新时间:2023-11-28 19:16:02 32 4
gpt4 key购买 nike

我希望能够从不同的类打开一个 ViewController。所以我可以简单地调用它来在我需要的任何地方打开一个 View 。

所以我在保存代码的类中有这个设置:


+ (void)openCalcView: (NSString *)nameOfView {

UIViewController *controller;

if ([nameOfView isEqualToString:@"Tax"]) {

controller = [[TAXViewController alloc]initWithNibName:@"TAXViewController" bundle:nil];


}else if ([nameOfView isEqualToString:@"Rent"]){

controller = [[RENTViewController alloc]initWithNibName:@"RENTViewController" bundle:nil];

}

controller.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentViewController:controller animated:YES completion:nil];
[controller release];

}

但是 [self presentViewController:controller animated:YES completion:nil]; 给我一个警告:

未找到类方法“+presentViewController:animated:completion:”(返回类型默认为“id”)

我可以通过它从任何类调用简单的东西,比如 NSLog。但这不起作用。

最佳答案

因为 openCalcView 是一个类方法,所以没有 UIViewController 实例(即没有 [self presentViewController:] 方法)。

您还需要将 UIViewController 传递给此类方法,如下所示:

+ (void)openCalcView: (NSString *)nameOfView fromViewController:(UIViewController *)controller { 

UIViewController *newController;

if ([nameOfView isEqualToString:@"Tax"]) {

newController= [[TAXViewController alloc]initWithNibName:@"TAXViewController" bundle:nil];


}else if ([nameOfView isEqualToString:@"Rent"]){

newController= [[RENTViewController alloc]initWithNibName:@"RENTViewController" bundle:nil];

}

newController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[controller presentViewController:newController animated:YES completion:nil];
[newController release];

}

controller 参数表示正在打开新 View Controller 的 UIViewController

关于objective-c - 从不同的类打开 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12012201/

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