【问题标题】:Instructing an app on which view to open on load?指示应用程序在加载时打开哪个视图?
【发布时间】:2011-03-20 15:12:27
【问题描述】:

我正在尝试指示我的应用打开某个视图,具体取决于用户是否已经在我的数据库上创建了用户配置文件。

所以基本上 -

- (void) viewWillAppear:(BOOL)animated {

//all my ASIHTTPRequest code here
//blah blah blah

NSString *responseString = [request responseString];

if ([responseString isEqualToString:@"noexistingdata"])
{

FriendsViewController *friendsview = [[FriendsViewController alloc] initWithNibName:nil bundle:nil];

//SOMETHING NEEDS TO GO HERE TO MAKE THIS WORK!

} else if ([responseString isEqualToString:@"success"])
{

//do whatever

}

}

我只想要更改视图的最基本代码...我会尝试使用 IBAction,但显然这不起作用,因为这对于应用程序的启动是无效的(而是对用户按下的按钮的响应) ),也想到了虚无中的虚无,也没有奏效。

所以基本上我需要的是:

启动应用 > 应用从我的服务器接收响应 > (IF RESPONSE = "THIS", LOAD VIEW "X") (IF RESPONSE = "THAT", LOAD VIEW "Y")

有人知道吗?

PS:最好列出这是 applicationDidFinishLaunching 吗?

【问题讨论】:

    标签: objective-c view void viewcontroller


    【解决方案1】:

    -viewWillAppear:在视图显示之前调用。这可能不是 a) 运行一些同步网络请求和 b) 加载另一个视图控制器的好时机。

    我建议让应用程序委托创建一个视图控制器,该控制器的视图仅显示一条消息,例如“连接到服务器”或“检索用户凭据”或其他任何内容。您可以添加一个动画微调器,让用户知道他们应该等待,如果这就是他们现在被允许做的所有事情的话。然后,在视图显示后,例如在该控制器的 -viewDidLoad 方法中,启动异步网络连接以与服务器通信。当您收到响应时,决定接下来要实例化哪个视图控制器,然后执行此操作。

    【讨论】:

    • 太棒了,好吧,这是有道理的,但我们仍然假设上面的代码现在是“- (void) viewDidLoad {”,那么在 viewDidLoad void 中更改视图的代码是什么?跨度>
    • 在-viewDidLoad中启动网络请求。请求完成后,切换到下一个视图。如何切换到视图取决于您的应用。如果您使用的是导航控制器,只需推送新的视图控制器。如果没有,让它查看窗口的子视图,就像在您的 -application:didFinishLaunchingWithOptions: 中所做的那样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多