ios 如何在不执行操作的情况下刷新用户界面

osh3o9ms  于 12个月前  发布在  iOS
关注(0)|答案(4)|浏览(104)

我是一个编程初学者,我正在做的是一个简单的iOS实时聊天应用程序,使用Swift,使用Parse作为后端。
我正在寻找的是如何让两个用户直接聊天,我的意思是假设有两个用户U1和U2,U1已经发送了一条消息给U2,如何使消息对U2可见,而不迫使他刷新页面?!
任何建议都有帮助!

olhwl3o2

olhwl3o21#

用一个(两个)字-推送通知。您将不得不实现推送通知并处理所有可能的情况,但您可能会发现有趣的一个特殊情况是在应用程序处于活动状态时推送通知。
这里有一些东西供你研究(如果你不熟悉PN):
How to setup push notifications in Swift
http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1

b4qexyjb

b4qexyjb2#

不需要刷新!你可以使用线程来完成它。Main_thread用于更新UI时间,让附加代码到另一个队列(并发或串行化取决于你的目的。With method using block(如果你不知道,去发现它,它可以在Ray Wenderlich上找到)。块是一种回调机制。就像这样:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
        [self getNewConversation:^(NSArray *conversations, NSError *error){
            dispatch_async(dispatch_get_main_queue(), ^{//you got back with main_thread
                if(error){
                    NSLog(@"Error with description: %@", error.description);
                }else{
                    //update your view with new content right here
                }
            });
        }];
    });

以上是机制如何更新您的屏幕时,消息到达.通过应用这个方法,您可以使用多线程来更新UI并操作Parse中的数据。关于远程通知,您可以参考@Nick提供的链接。当设备锁定或睡眠时应使用通知,使用活动应用程序,它应使用块来回调UI并更新它。说得好,应用多线程有助于提高应用程序的性能。但要小心!它不适合初学者,缺乏管理线程的经验可能会导致运行时错误,需要花费大量精力来检查和修复。

igetnqfo

igetnqfo3#

你可以只设置计时器,它会自动调用你设置的时间。

timer= [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(someMethod) userInfo:nil repeats:YES];

这将每2秒自动调用一次。

a11xaf1n

a11xaf1n4#

你可以使用setNeedsDisplay在视图“脏”的时候重画视图。意思是当收到信息时显示聊天和更新视图。

相关问题