TableView不会在textViewShouldEndEditing方法中重新加载

时间:2014-12-23 04:38:08

标签: ios objective-c uitableview uitextview

我正在创建一个使用tableView的应用程序,其中TextView作为Cell。并且它会在tableView的页脚上添加更多单元格。

现在我想在textView完成编辑时重新加载表。为此我将[tblView reloadData]放在textViewShouldEndEditing中,但此时表格没有重新加载。

请帮帮我。

3 个答案:

答案 0 :(得分:0)

UITextView Delegate Methods使用NSLogtry Delegate Method UITextView {/ 1}}来确保-(void)textViewDidEndEditing:(UITextView *)textView { [textView resignFirstResponder]; [self performSelector:@selector(reloadTableViewData) withObject:nil afterDelay:0.3]; } - (void)reloadTableViewData { [self.tableView reloadData]; } {{1}}正在通话。

{{1}}

答案 1 :(得分:0)

您需要验证textView.delegate是否设置为实现textViewShouldEndEditing的类的实例。如果TextView位于UITableViewCell子类中,那么您可能将该子类设置为UITextView的委托,而实际上您已在包含tableView的视图控制器上实现了委托方法。

一种方法是:

  1. 将您的UITextView放在UITableViewCell子类中。
  2. 在包含UITableView的视图控制器中实现UITextViewDelegate方法。 (它本身可能是一个UITableViewController,但它可能只是一个UITiewController,里面有一个UITableView;其中一个很好。)
  3. 使用与此类似的代码在单元格和包含视图控制器之间建立关系:

  4.  -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:    (NSIndexPath *)indexPath {
        MyCustomCellSubclass *cell = [tableView dequeueReusableCellWithIdentifier....];
        cell.textView.delegate = self;
        // do further cell customization if needed
        return cell;
        }
    

    然后当你的单元格的textView完成时,它会回调到包含的视图控制器。

    另外,根据您的描述,听起来您可能更喜欢委托方法:   - (void)textViewDidEndEditing:(UITextView *)textView; 而不是" shouldEndEditing",但对于您所描述的内容,这不是您当前的问题。

    作为一个补充提示,如果你执行[tblView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewAnimationRowAutomatic],它将使用漂亮的小动画刷新tableview,而不是像reloadData那样重新加载硬件。

答案 2 :(得分:0)

首先确保您拥有自我视图的UITextView Delegate。像

UITextView.delegate = self ; 

之后

- (BOOL)textFieldShouldReturn:(UITextView *)theTextField {
if (theTextField == TextView) {
    [Tableview Reload];
}
return YES;

}

试试这个,让我知道。