2017-09-15 11 views
-1

メッセージを表示するUITableviewがあるとします。最初は空であるとしましょう。最初に空であるときにUitableviewリロードの問題が発生する

今すぐ最初のメッセージを書き、[tableview reloadData]を呼び出します。しかし、メッセージ(最初のカスタムセル)は表示されません。テーブルビューを少し下にスクロールしてください。 !!! ???この問題は、2番目以降のメッセージには存在しません。 tableviewが空の場合は、最初のものだけを使用します。ここで

は、テーブルビューのための私のレイアウトです:

msgList = [[UITableView alloc] init]; 
msgList.frame = CGRectMake((self.view.frame.size.width - MIN(self.view.frame.size.width, 700))/2, grpMsg.frame.size.height+10, MIN(self.view.frame.size.width, 700), self.view.frame.size.height-grpMsg.frame.size.height-10); 

msgList.delegate = self; 
msgList.dataSource = self; 

if (self.view.frame.size.width <= 700) { 
    msgList.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
} else { 
    msgList.autoresizingMask = UIViewAutoresizingFlexibleHeight; 
} 
[msgList visibleCells]; 
[msgList indexPathsForVisibleRows]; 
msgList.backgroundColor = [UIColor clearColor]; 
msgList.separatorStyle = UITableViewCellSeparatorStyleNone; 
msgList.keyboardDismissMode = UIScrollViewKeyboardDismissModeInteractive; 
msgList.estimatedRowHeight = 80; 
msgList.contentInset = UIEdgeInsetsMake(56.0, 0.0, 0.0, 0.0); 
msgList.scrollIndicatorInsets = UIEdgeInsetsMake(44.0, 0.0, 0.0, 0.0); 
msgList.transform = CGAffineTransformMakeScale(1, -1); // flip tableView upside down 
msgList.backgroundColor = [UIColor colorWithRed:200/255.0f green:255/255.0f blue:255/255.0f alpha:1.0]; 
[self.view addSubview:msgList]; 

誰かが私を助けることができますか?

+2

テーブルビューに上限制約を設定する必要があると思いますが、 – 3stud1ant3

+0

レイアウト設定を投稿できますか? storyboardとautolayoutを使用している場合、またはプログラムでtableViewを追加している場合はコード –

+0

はい、私は今行ったことがあります。 – ekashking

答えて

0

、メッセージを送信して新しいデータを取得し、[tableView reloadData];を呼び出した後、私はまたのために呼び出す必要があり:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
    msgList.contentInset = UIEdgeInsetsMake(MAX(keyboardHeight+12, msgList.frame.size.height - msgList.contentSize.height), 0, 0, 0); 
}); 

...(私は推測)レイアウトを更新します。問題は解消されました。

関連する問題