[ios]方法调用出问题了吗?

发布时间: 2017/3/21 22:49:52
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有以下代码︰

    [self.view bringSubviewToFront:loggingIn];
    [self loginWithUsername:user Password:pw];

这是按下一个按钮 IBAction 方法中。该按钮保持突出显示状态,直到用户登录 (这可能需要几秒钟),然后将显示视图。怎么不出庭的登录方法叫做?

解决方法 1:

约翰的答案会工作,但却要比阻塞线程运行循环。基本上,只要您的应用程序接收事件,如获得所单击的按钮,您的处理程序获取主线程中运行。您的处理程序完成后,就会发生对 UI 做的任何更改。这让可可优化图形更新通过分析/执行他们在一起。

Run Loop:
  Event -> Your Handler Code -> System Updates UI

所以你需要让你为了让系统开始之前调用您的 loginWithUsername:Password 更新 UI-完成的处理程序代码: [原文如此] 的方法。调度的计时器就会撞上它到 (计时器去成为触发下一个循环的"事件") 运行循环的下一次迭代。所以,

Run Loop (2 iterations):
  Mouse Click -> Your Handler Code (reorder views) -> System reorders views
  Timer Fires -> Your Handler Code (trigger login) -> Any addl UI updates

这样做就像这样︰

- (void) buttonHandler: (id)sender {
    [self.view bringSubviewToFront:loggingIn];
    [self performSelector: @selector(performLogin)
               withObject: [NSArray arrayWithObjects:user, pw, nil]
               afterDelay: 0];
}

- (void) performLogin: (NSArray *)args {
    [self loginWithUsername:[args objectAtIndex:0] Password:[args objectAtIndex:1]];
}

它不必是一个数组。你也可以在字典中打包您的用户名和密码并改用该作为你的论点。

官方微信
官方QQ群
31647020