V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
democ
V2EX  ›  iDev

iOS 开发问题: storyboard 创建一个登录页面作为 initial view controller,登录验证成功后应该用什么方式去主界面(mainViewController).

  •  
  •   democ · 2014-03-20 22:46:16 +08:00 · 15067 次点击
    这是一个创建于 3901 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在我是用默认的 modal 方式的segue, 这样的方式应该是不对的,请问大家是怎么做的. 谢谢了.
    第 1 条附言  ·  2014-03-21 09:20:51 +08:00
    谢谢各位的回复,仍有以下一个问题:
    @black,按照你的方式我写了个伪代码

    loginViewController.m 中的代码如下:

    ```
    if(isAuthorized)
    {
    加载新的storyboard,设置新的initialViewController
    }
    ```

    那么如何处理这个loginViewController呢, 因为在这个应用中不需要它了.我就是这个地方弄不明白. 在loginViewController中设定另一个initialViewController让后把loginViewController给kill掉.

    @xhacker @txx 这个方式可以. 可是我更想知道如何在viewController中如何干掉自己...

    @PrideChung 懂你的意思,不过目前不会把login页面转main页面放在contianer view controller中处理
    12 条回复    1970-01-01 08:00:00 +08:00
    black
        1
    black  
       2014-03-21 00:27:11 +08:00
    创建另一storyboard处理登录后的事项,
    不要用segue, 因为不同的storyboard之间是不能connect的,
    在你的登录成功的地方, 代码加载新的storyboard从而获取新的intialViewController, 将它设置为window的rootViewController即可
    xhacker
        2
    xhacker  
       2014-03-21 04:31:57 +08:00   ❤️ 1
    把登录界面用 modal 弹出来,然后登录完 dismiss。
    chengchao0311
        3
    chengchao0311  
       2014-03-21 07:07:41 +08:00   ❤️ 1
    我一般用的是@xhacker说的这种方式
    txx
        4
    txx  
       2014-03-21 07:10:45 +08:00 via iPhone   ❤️ 1
    除了 navi 都可以吧。。。。。如果项目人多分storyboard 是最好的解决方案。否则modal就行了
    alexrezit
        5
    alexrezit  
       2014-03-21 07:30:31 +08:00
    @txx
    应该是 main 作为 root, 然后 present 验证页, 验证后再 dismiss 是么?
    shiweifu
        6
    shiweifu  
       2014-03-21 08:16:02 +08:00
    那登出呢?
    比如在MainViewController 中跳转了N个页面,然后登出,这时是先回MainViewController 再跳转?还是登录完成的时候回MainViewController?
    PrideChung
        7
    PrideChung  
       2014-03-21 08:36:45 +08:00
    其实可以考虑用 view controller containment。用一个ViewController作为所有ViewController的容器,就可以很方便地在不同的ViewController之间切换并且自定义过场效果了。
    bighair
        8
    bighair  
       2014-03-21 09:27:55 +08:00 via iPad
    得看需求吧,未登录可用部分功能是一种。微博这样又另一种,微博未登录任何帐号时的rootVC还是直接登录界面好吧,不然从什么vc来present登录页面?不难看吗?登完才换rootVC吧,保存了token之后以后自动登录才用登录后的根视图控制器做rootVC吧。不过墨客好像是以一个帐户列表为rootVC,登录页面只是中间present出来参与,登录后的根vc是从帐户视图控制器push出来的。
    black
        9
    black  
       2014-03-21 11:53:38 +08:00   ❤️ 1
    假设登录前window的rootViewController是LoginViewController, 那么当你登录成功后, 从另一个storyboard加载新的viewController并将它设置为新的rootViewController后, LoginViewController是会自动释放的.

    永远不做"自己干掉自己"的事!
    PrideChung
        10
    PrideChung  
       2014-03-21 12:08:55 +08:00   ❤️ 1
    好吧,Plan B,我想起来自己有一个应用是这么干的

    UIWindow的rootViewController用一个UINavigationController, 里面套着LoginViewController,登录成功后在LoginViewController里面调用[self.navigationController setViewControllers:@[MainViewController] animated:YES] 来替换掉LoginViewController,这样有默认的push动画而且也能够把LoginViewController释放掉。
    krafttuc
        11
    krafttuc  
       2014-03-21 16:12:27 +08:00 via iPhone
    我一般是主controller当rootViewController,而loginViewController用来被present
    yourtion
        12
    yourtion  
       2014-03-21 16:15:21 +08:00 via iPhone
    我的做法是在加载过程判断了登录状态,如果未登录就present那个登录的view。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   958 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:39 · PVG 04:39 · LAX 12:39 · JFK 15:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.