1

我有一个使用 UITabBarController 作为其主界面的 iPhone 应用程序。该应用程序还大量使用从各种选项卡呈现的模态 UINavigationController。

我需要以模态方式呈现一个 ViewController,它可以从应用程序中的各种位置触发。在触发它的所有视图控制器之间复制创建和呈现它的代码似乎是一个糟糕的主意。我想把这段代码放在一个地方,并从任何 viewController 想要呈现它的地方触发它。

这个集中的位置应该在哪里?我的根 ViewController 是一个 UITabBarController 所以在那里不好,我讨厌将视图功能集中到 AppDelegate 中。

4

3 回答 3

1

我会创建一个新的类文件,它具有呈现您想要的视图的功能。这样你只需要编写一次代码来呈现模态视图,每个需要使用它的视图都可以用一行代码调用助手类上的函数。

@interface ApplicationHelper : NSObject {
}

+(void)showMyModalView:(UIViewController *)parentViewController;

@end

执行:

#import "ApplicationHelper.h"
#import "ViewController.h"

@implementation ApplicationHelper

+(void)showMyModalView:(UIViewController *)parentViewController
{
      ViewController *vc = [[ViewController alloc] init];

      [parentViewController presentModalViewController:vc animated:YES];
}
@end

然后在每个视图控制器中导入 ApplicationHelper 并调用 showMyModalView 方法

[ApplicationHelper showMyModalView:me];

这允许您将所有视图处理代码保存在一个单独的文件中,以供您的应用程序委托使用。

于 2012-04-27T12:14:37.607 回答
0

您可以创建一个 UIViewController 并为其实现一些委托方法。然后你可以像这样展示视图控制器:

[currentViewController presentViewController:yourViewController animated:YES];

当您的视图控制器中触发事件时,它将委托给调用者。

在这种情况下,您只需为“YourViewController”编写一次代码,然后在您想要的任何地方重复使用它。你也可以使用 pushviewcontroller:

[self.navigationController pushviewcontroller:yourViewController animated:YES];
于 2012-04-27T09:53:04.077 回答
0

不要尝试传递参考。

只是alloc] init];一个新的实例——无论你需要在哪里使用它。

例如。

MyModalViewController *controller = [[MyModalViewController alloc] init];
[self presentModalViewController:controller animated:YES];
于 2012-04-27T12:10:55.323 回答