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 · Mar 20, 2014 · 16327 views
    This topic created in 4610 days ago, the information mentioned may be changed or developed.
    现在我是用默认的 modal 方式的segue, 这样的方式应该是不对的,请问大家是怎么做的. 谢谢了.
    Supplement 1  ·  Mar 21, 2014
    谢谢各位的回复,仍有以下一个问题:
    @black,按照你的方式我写了个伪代码

    loginViewController.m 中的代码如下:

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

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

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

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

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

    UIWindow的rootViewController用一个UINavigationController, 里面套着LoginViewController,登录成功后在LoginViewController里面调用[self.navigationController setViewControllers:@[MainViewController] animated:YES] 来替换掉LoginViewController,这样有默认的push动画而且也能够把LoginViewController释放掉。
    krafttuc
    krafttuc
    Mar 21, 2014 via iPhone
    11
    我一般是主controller当rootViewController,而loginViewController用来被present
    yourtion
    yourtion
    Mar 21, 2014 via iPhone
    12
    我的做法是在加载过程判断了登录状态,如果未登录就present那个登录的view。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1343 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 22:15 · PVG 06:15 · LAX 14:15 · JFK 17:15
    ♥ Do have faith in what you're doing.