回调cellForRowAtIndexPath?

时间:2014-01-20 11:15:02

标签: ios iphone uitableview

我的项目:

我的项目中有UITableView。每个UITableViewCell都有一个UITextView作为子视图。当用户点按“添加”按钮时,我需要再添加一个UITableViewCell UITextViewUITableView,我必须将焦点设置为添加的UITextView

我尝试过的事情:

用户点击添加按钮后,我会更新numberOfRowsInSection的{​​{1}},然后我会调用UITableView来调用[UITableView reloadData]。在这里,我会将[UITableView cellForRowAtIndexPath]附加为UITextView的子视图。直到这一点,它才能正常工作。

我的问题:

我需要在调用UITableViewCell之后将焦点设置为UITextView。当我在[UITableView cellForRowAtIndexPath]之后调用UITextView的设定焦点方法时,它无效。我想知道,[UITableView reloadData]是否有任何回调方法?

感谢您的回答。

2 个答案:

答案 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];