채팅 응용 프로그램을 만들었습니다. 이런 방식으로 메시지를받은 :테이블 뷰 다시로드 데이터가 응용 프로그램의 백그라운드에서 작동하지 않음
-(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];
}
편집
죄송하지만,이 문제는 응용 프로그램이 배경에서 오는 후에 발생한다.
나는 테이블을 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}>
편집
나는 또한 하나 개의 버그를 발견했을 때 내가 arrayChat에 추가 된 객체가 추가되지만 whe n 앱에서 잃어버린 배경에서부터 응용 프로그램을 추가 한 마지막 객체보다 두 번째로 데이터를 다시로드합니다.
배열에 개체가 있는지 확인 했습니까? – user3182143
예. 새 객체를 추가하고 .. numberOfRowsInSection의 수가 증가합니다. – Kabali
코드 작성 – user3182143