我有一个视图,其中我在顶部有一个按钮,在底部有一个带有自定义单元格的桌面视图 自定义单元格我有一个文本字段,我试图访问tableview单元格外的文本字段内容,在顶部按下该按钮的行方法,只有显示的单元格文本,如果滚动到顶部并点击在保存时,底部文本字段值为nil,如果我滚动到底部并点击保存底部文本字段值为nil,我想它与使用标识符的dequeue可恢复单元格有一些关系。
// tableview方法
- (UITableViewCell*) tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{
static NSString *simpleTableIdentifier = @"AcessoryCell";
AcessoryCell *cell = (AcessoryCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"AcessoryCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
}
for (NSInteger i=0; i<selectedButtonsArray.count; i++)
{
NSNumber * num = [selectedButtonsArray objectAtIndex:i];
NSIndexPath * indexPath=[NSIndexPath indexPathForRow:[num intValue] inSection:0];
AcessoryCell *cell = (AcessoryCell *) [self.acessoryTableView cellForRowAtIndexPath:indexPath];
NSLog(@"text field text is %@", cell.celltextField.text);
}
日志
text is 1
text is 1
text is 1
text is 1
text is 1
text is 1
text is (null)
text is (null)
如果我滚动到底部,则记录是
text is (null)
text is (null)
text is 1
text is 1
text is 1
text is 1
text is 1
text is 1
答案 0 :(得分:2)
试试这个:
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:YOUR_ROW inSection:YOUR_SECTION];
UITableViewCell* cell = [yourTable cellForRowAtIndexPath:indexPath];
cell.textLabel.textColor = YOUR_COLOR;
[yourTable reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
答案 1 :(得分:0)
是的,在这里您需要为每个单元格指定一个标识符,当您使用static
标识符时,它不会将每个单元格加载到内存中。
你必须提供一个唯一的标识符来加载UITableView中的所有单元格,并在滚动UITableView时保持不变。
替换此行
static NSString *simpleTableIdentifier = @"AcessoryCell";
有了这个
NSString *simpleTableIdentifier = @"AcessoryCell";
修改强>
- (UITableViewCell*) tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{
NSString *simpleTableIdentifier = @"AcessoryCell";
AcessoryCell *cell = (AcessoryCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
//.... do your stuff
}
答案 2 :(得分:0)
我希望您基于该行显示文本字段的不同值。 使用相同的逻辑来获取文本字段的值。
您是否正在使用数组值来显示基于行的文本字段?
答案 3 :(得分:0)
斯威夫特3:
let cell :SampleTableCell = sampleTableView.cellForRow(at: IndexPath(row: 0, section: 0)) as! SampleTableCell