我有UITableView
个自定义tableview
个单元格。我的Cell
之一有一个UITextField
,我正在处理自定义textfield
类中的tableviewCell
委托方法。我需要在用户输入文本后重新加载tableview
,我已完成以下操作但没有工作,任何想法请帮助我。
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
UITableView *parentTable = (UITableView *)self.superview;
[parentTable reloadData];
}
答案 0 :(得分:3)
注册视图控制器以接收数据已更改的通知,并在收到数据时刷新表。然后让解析器将其发送出去。
注册很容易:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reloadTableView:)
name:@"reloadTableView"
object:nil];
您的刷新方法需要设置为接收这些通知,具体如下:
- (void)reloadTableView:(NSNotification *)notif {
[self.yourTableName reloadData];
}
在ViewDidUnload中停止观察非常重要:
[[NSNotificationCenter defaultCenter] removeObserver:self];
然后在解析器中,您只需在完成后添加它:
[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadTableView"
object:nil];
视图控制器(以及使用该名称观察通知的其他任何人)将获取消息并执行其任务。
谢谢..
答案 1 :(得分:1)
@property (nonatomic, copy) void(^tapHandler)(NSUInteger tag);
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
NSUInteger tag = 10; //Need to change the tag
self.tapHandler(10);
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
// Whatever content was previously there. Add the below line in addition
cell.tapHandler = ^(NSUInteger tag){
[tableView reloadData];
};
return cell
}
希望它有所帮助!
答案 2 :(得分:0)
首先,textfiled的superview不是UITableview,它是tableviewcell或tableviewcell.contentview(取决于你的代码)
然后,您只需将tableview设置为视图控制器的成员或属性
然后
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
[self.tableview reloadData];
}
答案 3 :(得分:0)
试试这个,
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
[self.parentTable reloadData];
}
答案 4 :(得分:0)
最好在CustomCell
// interface
UITableView *tableView;
// propery
@property (nonatomic)UITableView * tableView;
然后
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//your stuff
cell.tableView= tableView;
}
答案 5 :(得分:0)
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
UITableView *parentTable = (UITableView *)textField.superview.superview;
[parentTable reloadData];
}
答案 6 :(得分:0)
按(UITableView *)self.superview;
,您将无法获得表格视图。请尝试以下代码:
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
YourCell *cell = (YourCell *)[[textField superview] superview]; // you will get cell
UITableView *table = cell.superview; // you will get table view
[table reloadData];
}
答案 7 :(得分:0)
不要为该小操作重新加载整个表视图。只需重新加载文本字段所在的单元格即可。还没有忘记更新您的数据源,因为表格视图单元格在加载单元格时从数据源获取数据。
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
[tableViewDataSource addObject:textField.text];//this will fill the data source with data of textfield
CustomCell *cell = (CustomCell *)textField.superview.superview;
NSIndexPath *indexPath = [parentTable indexPathForCell:cell];
[parentTable reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}
答案 8 :(得分:0)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
tableReload++;
NSString *CellIdentifier = [NSString stringWithFormat:@"cell %d%d",indexPath.row,tableReload];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
cell.textLabel.text = @"Hello";
}
// Configure the cell.
return cell;
}
答案 9 :(得分:0)
试试这个,
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
[self.yourTableName reloadData];
[self.yourTableName reloadInputViews];
}