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

问题描述 投票:0回答:4

我是编程初学者,我正在做的是一个简单的 iOS 实时聊天应用程序,使用 Swift 使用 Parse 作为后端。

我正在寻找的是如何让两个用户直接聊天,我的意思是假设有两个用户U1和U2,并且U1已向U2发送消息,如何使消息对U2可见而不强迫他刷新页面? !

任何建议都会有所帮助!

ios swift parse-platform
4个回答
2
投票

用一(两)个字来说——推送通知。您将必须实现推送通知并处理所有可能的情况,但您可能会发现有趣的一个特别之处是应用程序处于活动状态时的推送通知。

这里有一些东西供您调查(如果您不熟悉 PN):

如何在 Swift 中设置推送通知

http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1


1
投票

无需刷新!您可以使用线程来完成此操作。 Main_thread用于时时更新UI,让代码附加到另一个队列(并发或序列化取决于你的目的。使用块的方法(如果你不知道,发现它,它在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 并更新它。说得好,应用多线程有助于提高应用程序性能。但要小心!不适合初学者,缺乏管理线程的经验可能会导致运行时错误,需要花费很大的精力来检查和修复。


0
投票

您只需设置定时器,它会自动调用您设置的时间。

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

每 2 秒会自动调用一次。


0
投票

当视图“脏”时,您可以使用 setNeedsDisplay 重新绘制视图。这意味着在收到信息时显示聊天并更新视图。

© www.soinside.com 2019 - 2024. All rights reserved.