我的项目:
我的项目中有UITableView
。每个UITableViewCell
都有一个UITextView
作为子视图。当用户点按“添加”按钮时,我需要再添加一个UITableViewCell
UITextView
到UITableView
,我必须将焦点设置为添加的UITextView
。
我尝试过的事情:
用户点击添加按钮后,我会更新numberOfRowsInSection
的{{1}},然后我会调用UITableView
来调用[UITableView reloadData]
。在这里,我会将[UITableView cellForRowAtIndexPath]
附加为UITextView
的子视图。直到这一点,它才能正常工作。
我的问题:
我需要在调用UITableViewCell
之后将焦点设置为UITextView
。当我在[UITableView cellForRowAtIndexPath]
之后调用UITextView
的设定焦点方法时,它无效。我想知道,[UITableView reloadData]
是否有任何回调方法?
感谢您的回答。
答案 0 :(得分:1)
试试这个,
在添加按钮操作
//Assuming only 1 section, if you have more section find sections by `numberOfSections` method
NSInteger totalRows = [self.tableView numberOfRowsInSection:0];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:totalRows inSection:0];
[tableView beginUpdates];
[tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
[tableView endUpdates];
//If you have custom cell
CustomCell *cell = (CustomCell *)[self.tableView cellForRowAtIndexPath:indexPath];
[cell.textView becomeFirstResponder];
//If you are not using custom cell, then set tag to textView and
//UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
//UITextView *textView = (UITextView *)[cell viewWithTag:kTextViewTag];
//[textView becomeFirstResponder];
答案 1 :(得分:0)
在调用reloadData
方法后,您可以执行以下操作:
要获得对最后一节中最后一行的引用...
// First figure out how many sections there are
NSInteger lastSectionIndex = [self.myTableView numberOfSections] - 1;
// Then grab the number of rows in the last section
NSInteger lastRowIndex = [self.myTableView numberOfRowsInSection:lastSectionIndex] - 1;
// Now just construct the index path
NSIndexPath *pathToLastRow = [NSIndexPath indexPathForRow:lastRowIndex inSection:lastSectionIndex];
//Grab a reference of your cell from the last row
MyCustomCell *myCC = [self.myTableView cellForRowAtIndexPath:pathToLastRow];
//Use this cell reference to set focus to your UITextView
[myCC.myTextView setFirstResponder:YES];