(最终解决方案在底部)
我正在尝试设置一个具有初始登录视图的iPad应用程序。用户单击操作时,应将其重定向到主视图。
最初,我是在设置UIViewController来处理登录视图。在这里,我想使用自定义视图控制器显示下一组视图。
我正在创建一个处理loginView的LoginViewController,并将此视图从AppDelegate添加到窗口中:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
loginViewController = [[LoginViewController alloc] init];
[self.window addSubview:loginViewController.loginView];
[self.window makeKeyAndVisible];
return YES;
}
我的LoginViewController的界面如下:
@interface LoginViewController : UIViewController {
UIView *loginView;
UITextField *usernameTextField;
UITextField *passwordTextField;
UIButton *submitButton;
}
@property (nonatomic, retain) IBOutlet UIView *loginView;
@property (nonatomic, retain) IBOutlet UITextField *usernameTextField;
@property (nonatomic, retain) IBOutlet UITextField *passwordTextField;
-(IBAction)submit;
-(void)setupTextFields;
@end
我试图做的是在LoginViewController内添加一个HomeViewController,它将扩展UIViewController类,以便在按下loginView内的操作按钮时将加载新的自定义视图控制器。
但是当我这样做时,由HomeViewController处理的初始显示图像被错误地渲染。当应该为纵向时,它似乎显示为横向,反之亦然。
我希望在视图堆栈的底部显示登录视图,以便在单击注销操作时能够返回到该登录视图。
我认为我解决这个问题的方法是错误的。任何人都可以将我定向到最佳解决方案吗?我该怎么做?
在遵循@Jonah提出的解决方案之后,我将homeViewController切换为在AppDelegate中创建的homeViewController,并按以下方式调用
displayLoginModalViewController
:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
homeViewController = [[HomeViewController alloc] init];
[homeViewController displayLoginModalViewController];
[self.window addSubview:homeViewController.homeView];
[self.window makeKeyAndVisible];
return YES;
}
我的
displayLoginModalViewController
的实现如下:-(void)displayLoginModalViewController{
LoginViewController *loginViewController = [[LoginViewController alloc] init];
loginViewController.modalPresentationStyle = UIModalPresentationFullScreen;
loginViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:loginViewController animated:YES];
}
我确实尝试在将
displayLoginModalViewController
添加到窗口之前和之后调用homeView
方法,并且未呈现模式视图。我觉得这里有些东西我想念。当从homeView按下注销操作时,该方法的确呈现模式视图,而不是在应用程序启动时。在
NSLog
中添加子视图之后,在didFinishLaunchingWithOptions:
方法中的presentModalViewController
之后,我也放置了displayLoginModalViewController
。这两个NSLog
都显示在我的控制台中,我只是不知道为什么它不显示“模态视图”。================================================== =========================================
感谢您提供的选项。我决定走模态路线。不幸的是,当我最初进行设置时,我以错误的方式来解决问题。
当归结为模态视图时,显然它们需要用户交互。这意味着它们只能在用户执行操作后显示。当我第一次想将登录设置为模式视图并将主视图保留为主视图时,根本无法在启动时显示模式视图。它需要采取行动。
盯着屏幕看了几个小时后,我决定不再固执,而是使用登录名作为我的主屏幕,并以模式显示主视图。这不仅解决了启动时显示登录信息的问题,而且还有助于进行设置,我希望能够使用户从应用程序中注销而不退出应用程序,而只是从那一点上释放所有内存使用情况。
最佳答案
登录视图非常适合模态视图控制器。看一下UIViewController的-presentModalViewController:作为一种将登录视图控制器呈现在当前正在填充窗口的任何其他视图控制器之上的机制。
关于cocoa-touch - 如何在通用UIViewController之后设置自定义UIViewController?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4673705/