我有三个视图,Splash,Login和List。
从Splash我只是等待,然后推送登录视图,隐藏导航栏。
在登录中我显示NavigationBar,隐藏BackButton1并添加一个新的RightButton1,然后检查是否设置了Settings.bundle“login”和“pass”。如果是这样,我推送列表视图。否则我会留在登录视图中等待用户填写表单并按下按钮。
在列表视图中,我添加了一个新的RightButton2和一个新的BackButton2。
问题是如果Settings.bundle数据不为null,并且在Login View中我快速推送列表视图,RightButton1出现在列表视图中,或者根本没有按钮出现,或者只显示BackButton2 ... < / p>
最奇怪的是,一切都很好,突然间它开始变得混乱。
登录视图:
// Making the Navigation Bar Visible
[self.navigationController setNavigationBarHidden:NO animated:NO];
// Hiding the Back Button in THIS view (Login)
[self.navigationItem setHidesBackButton:YES];
// Inserting the Logout Button for the Next View (List)
UIBarButtonItem *backButton = [[UIBarButtonItem alloc]
initWithTitle:@"Logout"
style:UIBarButtonItemStylePlain
target:nil
action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
UIBarButtonItem* newAccountButton = [[UIBarButtonItem alloc]
initWithTitle:@"New Account"
style:UIBarButtonItemStylePlain
target:self
action:@selector(newAccountButtonPressed)];
self.navigationItem.rightBarButtonItem = newAccountButton;
[newAccountButton release];
列表视图
// Making the Navigation Bar Visible
[self.navigationController setNavigationBarHidden:NO animated:NO];
UIBarButtonItem* aboutButton = [[UIBarButtonItem alloc]
initWithTitle:@"About"
style:UIBarButtonItemStylePlain
target:self
action:@selector(aboutButtonPressed)];
self.navigationItem.rightBarButtonItem = aboutButton;
[aboutButton release];
有什么想法吗?
更新:我已经测试了更多,在我看来,当我快速从登录到列表时,NavigationBar没有足够的时间添加按钮并添加按钮和条形图在错误的顺序。我已经使用performSelector使登录视图等到推送列表,如果延迟类似于2秒,则everthing正常,但如果它像0.1秒那样问题再次出现。
我正在使用viewDidLoad ..如果LoginBar中的所有东西都已正常,我怎样才能使Login View只推送List View?换句话说,如何在没有固定时序延迟的情况下使推送等待所有先前的命令?
答案 0 :(得分:0)
要考虑的一件事是将启动画面设置为模态视图控制器,因为您必须执行大量额外工作才能使其不显示在导航层次结构中。只需使用导航控制器的presentModalViewController:animated:
方法即可。
制作登录视图模式也是有意义的。
更好的是,使用default.png作为启动画面,然后弹出一个模态视图控制器进行登录。假设您的启动画面是静态的。