私はチャットアプリを作成した後に、その目的を失った、私はarrayChat
にメッセージを追加します。アレイは、いくつかの時間
-(void)msgRecevied:(NSMutableDictionary *)messageContent
{
NSString *m = [messageContent objectForKey:kMsg];
[messageContent setObject:[m substituteEmoticons] forKey:kMsg];
self.arrayTemp = messageContent;
[self.arrayChat addObject:self.arrayTemp];
[_tblChat reloadData];
if(self.arrayChat.count > 1){
NSIndexPath *topIndexPath = [NSIndexPath indexPathForRow:self.arrayChat.count-1
inSection:0];
[self.tblChat scrollToRowAtIndexPath:topIndexPath
atScrollPosition:UITableViewScrollPositionMiddle
animated:YES];
}
}
しかし、私がメッセージを送信するとき、私はそれの後、しばらくの間、私のデバイスを入れてしばらくすると、それが追加しますオブジェクトはarrayChat
になりますが、tableViewにはロードされません。テーブルをリロードすると、最後に失われたオブジェクトが表示されます。arrayChat
から失われました。私はここにも@synthesize arrayTemp;
どれでも間違いを
@interface ViewController : UIViewController
{
NSMutableArray *arrayChat;
}
@property (strong,nonatomic) NSMutableArray *arrayChat;
と:
私のようなarrayChat
を宣言しますか?
EDIT
私は他のクラスに私のarrayChat
を追加し、私はアプリ上でその配列にアクセスするには、そのクラスを使用し、それが働いているが、私は配列にオブジェクトを追加するときに問題が発生したがAppdelegate
にそのクラスを宣言私のテーブルをすぐに再読み込みしないで、私は最後に追加されたオブジェクトを配列に表示するその時間に私のチャットビューをボタン上で拡大しています。イムは、ビューを拡大したときに、ここで
は私のコードです:
-(IBAction)onClickViewLarge:(id)sender{
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;
if (!isShow) {
[_btnOpen setImage:[UIImage imageNamed:@"ico_expand"] forState:UIControlStateNormal];
[UIView animateWithDuration:0.5 animations:^{
if(screenHeight >= 736)
self.view.frame = CGRectMake(0,66 , screenWidth, screenHeight - 66);
else if (screenHeight >= 667)
self.view.frame = CGRectMake(0,60 , screenWidth, screenHeight - 60);
else if (screenHeight >= 568)
self.view.frame = CGRectMake(0,51 , screenWidth, screenHeight - 51);
else if (screenHeight >= 480)
self.view.frame = CGRectMake(0,43 , screenWidth, screenHeight - 43);
}];
isShow = true;
} else {
[_btnOpen setImage:[UIImage imageNamed:@"ico_open"] forState:UIControlStateNormal];
[UIView animateWithDuration:0.5 animations:^{
self.view.frame = CGRectMake(screenWidth - 250,screenHeight - 450 , 250, 450);
}];
isShow = false;
}
if([app.Glb.arrayChat count] > 0)
{
[self.tblChat reloadData];
NSIndexPath *topIndexPath = [NSIndexPath indexPathForRow:app.Glb.arrayChat.count-1
inSection:0];
[self.tblChat scrollToRowAtIndexPath:topIndexPath
atScrollPosition:UITableViewScrollPositionMiddle
animated:YES];
}
}
これが解決される方法は?
問題はグローバルarrayTempオブジェクトであると思います。あなたのmsgReceviedメソッドの中で宣言してみてください – Arun
何も効果がありません。 – Kabali
あなたのarrayTempも強いですか?それを強くしないでください。私はしばらくしてからその設定がなくてもいいと思う。 –