2个视图,一个登录界面A,一个程序界面B,
在登录界面上有个按钮:登录,
为了从A能够跳到B,因此,本人在按钮和B之间建立了Segue,
然后是希望点击 登录后,就执行一个回调函数,然后根据函数结果,决定能否调用performSegueWithIdentifier:sender:(能否跳转到B) ,但是发现,结果不是本人想要的,本人无法通过performSegueWithIdentifier:sender:来控制,一点击,就自动从A跳到B了,而回调函数还没有执行完。
问一下本人的思路,错在哪里?应该怎么样纠正?
在登录界面上有个按钮:登录,
为了从A能够跳到B,因此,本人在按钮和B之间建立了Segue,
然后是希望点击 登录后,就执行一个回调函数,然后根据函数结果,决定能否调用performSegueWithIdentifier:sender:(能否跳转到B) ,但是发现,结果不是本人想要的,本人无法通过performSegueWithIdentifier:sender:来控制,一点击,就自动从A跳到B了,而回调函数还没有执行完。
问一下本人的思路,错在哪里?应该怎么样纠正?
解决方案:2分
在这个方法里判断shouldPerformSegueWithIdentifier
能跳的话return YES,反之return NO
能跳的话return YES,反之return NO
解决方案:3分
这种需要逻辑上的判断而进行的页面跳转,最好通过代码编写逻辑 。使用故事板会在编译时就固定了他们的跳转关系,所以会出现你说的情况。
解决方案:5分
看你怎么样组织的应用,你可以这样来做。在application启动的函数中处理
将self.window.rootViewController 指向应用的主界面,这里假设为MainViewcontroller。这时判断缓存中的用户能否存在,假如存在(说明已登录)则不执行弹出动作,直接显示主界面。假如不存在说明未登录,这时要使用MainViewcontroller 来present 登录控制器loginViewController . 而不是[self presentViewcontroller:XX ]
将self.window.rootViewController 指向应用的主界面,这里假设为MainViewcontroller。这时判断缓存中的用户能否存在,假如存在(说明已登录)则不执行弹出动作,直接显示主界面。假如不存在说明未登录,这时要使用MainViewcontroller 来present 登录控制器loginViewController . 而不是[self presentViewcontroller:XX ]
解决方案:5分
本人觉得不用那么复杂。直接在登录界面的button回调函数中判断输入的账号和密码能否正确。假如正确直接的通过压栈直接进入主界面。假如错误可以加一个 UIAlertView提示就OK了。
解决方案:5分
本人说的是在AppDelegate.m 中的代理方法
– (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
中来处理。还有一点,有时使用故事板是可以让一些刚开始学者很简单的构建应用,但去让他们忽略了应用程序本质上是假如启动的。更进一步的东西看不到,只停留在怎么样使用上。
– (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
中来处理。还有一点,有时使用故事板是可以让一些刚开始学者很简单的构建应用,但去让他们忽略了应用程序本质上是假如启动的。更进一步的东西看不到,只停留在怎么样使用上。