私はチャットアプリケーションを作成しました。私はこの方法でメッセージを受信した:テーブルビューのリロードデータがアプリケーションのバックグラウンド後に機能しない
-(void)msgRecevied:(NSMutableDictionary *)messageContent
{
NSString *m = [messageContent objectForKey:kMsg];
[messageContent setObject:[m substituteEmoticons] forKey:kMsg];
[messageContent setObject:[messageContent objectForKey:kTrnDate] forKey:kTrnDate];
[messageContent setObject:[messageContent objectForKey:kSender_User] forKey:kSender_User];
[messageContent setObject:[messageContent objectForKey:kReceiver_User] forKey:kReceiver_User];
[arrayChat addObject:messageContent];
NSLog(@"%@",arrayChat);
dispatch_sync(dispatch_get_main_queue(), ^{
[self.tblChat reloadData];
});
if(arrayChat.count > 1){
NSIndexPath *topIndexPath = [NSIndexPath indexPathForRow:arrayChat.count-1
inSection:0];
[self.tblChat scrollToRowAtIndexPath:topIndexPath
atScrollPosition:UITableViewScrollPositionMiddle
animated:YES];
}
}
私がメッセージを受信すると、それが配列に追加されたメッセージと呼ばれるnumberOfRowsInSection
よりも、テーブルをリロードし、私もnumberOfRowsInSection
でカウントし、それもなく呼ば高める配列印刷cellForRowAtIndexPath
私のメッセージを表示することはできません。
また、メインスレッドなしでテーブルをリロードしても動作しませんでした。
問題は何ですか?
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSLog(@"%lu",[arrayChat count]);
return [arrayChat count];
}
EDIT
申し訳ありませんが、この問題は、アプリがバックグラウンドから来て後に発生しています。
私はテーブルをprtinted:
2016-08-22 11:21:02.465 Diamonds[16679:6710554]
<UITableView: 0x12e0a6200; frame = (0 55; 250 332); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x6f50>; animations = { position=<CASpringAnimation: 0x1320e3b40>; bounds.origin=<CASpringAnimation: 0x132173610>; bounds.size=<CASpringAnimation: 0x132173700>; bounds.origin-2=<CASpringAnimation: 0x13215c1b0>; bounds.size-2=<CASpringAnimation: 0x13215c2a0>;
};
layer = <CALayer: 0x5a20>; contentOffset: {0, 3609}; contentSize: {250, 3941.197265625}>
背景から来た後:アプリの実行が
2016-08-22 11:19:51.910 Diamonds[16676:6709818]
<UITableView: 0x1388e2e00; frame = (0 55; 250 0);clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x13ca33040>; layer = <CALayer: 0x13c9e2bf0>; contentOffset: {0, 3125}; contentSize: {250, 3855.68359375}>
EDIT
私はまた、その1個のバグを見つけたとき、私arrayChatに追加されたオブジェクトが追加されますが、whe nアプリはバックグラウンドから消えた後に追加した最後のオブジェクトよりも2回データをリロードします。
オブジェクトに配列が含まれていることを確認しましたか? – user3182143
はいそれは新しいオブジェクト..を追加し、その数もnumberOfRowsInSectionで増加します。 – Kabali
コーディングを表示 – user3182143