adi*_*dit 11 iphone objective-c ipad ios
如何从app delegate的视图中呈现模态视图控制器,这是最顶级的?试图从UIView呈现一个模态视图控制器,这让我感到困惑.
XJo*_*nes 12
用你的rootViewController.您可以从任何视图控制器子类提供模态视图控制器.如果您的根VC是UITabBarController,那么您可以这样做:
[self.tabBarController presentModalViewControllerAnimated:YES]
Run Code Online (Sandbox Code Playgroud)
或者如果它是导航控制器:
[self.navigationController presentModalViewControllerAnimated:YES]
Run Code Online (Sandbox Code Playgroud)
等等
编辑:MVC
通过尝试从视图中呈现控制器,您正在打破MVC模式.通常,视图涉及其外观和暴露接口以将用户界面状态传达给其控制器.例如,如果您UIButton在视图中有一个并且希望它呈现模态视图控制器,则不要硬连接视图来执行此操作.相反,当控制器实例化视图时,控制器通过将自身设置为目标来配置按钮,以接收touchUpInside可以呈现适当的模态视图控制器的动作.
视图本身没有(也不应该)具有这种上下文知识来完成控制器的工作.
Ste*_*eve 10
最好的方法是创建一个新的UIWindow,设置它的windowLevel属性,并UIViewController在该窗口中显示.
这是怎么回事UIAlertView.
接口
@interface MyAppDelegate : NSObject <UIApplicationDelegate>
@property (nonatomic, strong) UIWindow * alertWindow;
...
- (void)presentCustomAlert;
@end
Run Code Online (Sandbox Code Playgroud)
执行:
@implementation MyAppDelegate
@synthesize alertWindow = _alertWindow;
...
- (void)presentCustomAlert
{
if (self.alertWindow == nil)
{
CGRect screenBounds = [[UIScreen mainScreen] bounds];
UIWindow * alertWindow = [[UIWindow alloc] initWithFrame:screenBounds];
alertWindow.windowLevel = UIWindowLevelAlert;
}
SomeViewController * myAlert = [[SomeViewController alloc] init];
alertWindow.rootViewController = myAlert;
[alertWindow makeKeyAndVisible];
}
@end
Run Code Online (Sandbox Code Playgroud)
应用程序代理不管理视图.您应该从第一个视图控制器的-viewDidAppear:方法呈现一个模态视图控制器,该控制器将被放入屏幕-application:didFinishLaunchingWithOptions:.
| 归档时间: |
|
| 查看次数: |
14322 次 |
| 最近记录: |