当 UIPickerView 值更改时,表行在 ios 中更改
Posted
技术标签:
【中文标题】当 UIPickerView 值更改时,表行在 ios 中更改【英文标题】:When UIPickerView Value changed then table row changed in ios 【发布时间】:2014-07-09 06:18:10 【问题描述】:在我的 UIview 中,当单击文本字段时,我有 UITextField
,然后我使用 UIPickerView
。然后我选择值这个值进入文本字段。
现在我想当文本字段值改变时,表格行值改变。
我使用了以下代码
- (void)viewDidLoad:
[super viewDidLoad];
[self loadCriteria];
UILabel * projectDetailLable = [[UILabel alloc] initWithFrame:CGRectMake(0,[topBar bottom],320, 30)];
projectDetailLable.textColor = [UIColor whiteColor];
projectDetailLable.backgroundColor = UIColorFromRGB(0x28a0d8);
projectDetailLable.font = [UIFont boldSystemFontOfSize:16];
projectDetailLable.text = @"Choose Criteria Category:";
projectDetailLable.textAlignment = NSTextAlignmentLeft;
[self.view addSubview:projectDetailLable];
criteriaTextField = [[UITextField alloc] initWithFrame:CGRectMake(2, [projectDetailLable bottom]+2, 316, 30)];
criteriaTextField.borderStyle = UITextBorderStyleLine;
// criteriaTextField.text = @"Health & Well being";
criteriaTextField.font = [UIFont systemFontOfSize:13];
[self.view addSubview:criteriaTextField];
UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = criteriaTextField.frame;
[button addTarget:self action:@selector(launchCriteriaPicker) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
caseStudyTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, [criteriaTextField bottom]+5, 320, self.view.frame.size.height )];
if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
[caseStudyTableView setSeparatorInset:UIEdgeInsetsZero];
caseStudyTableView.delegate = self;
caseStudyTableView.dataSource = self;
caseStudyTableView.rowHeight = 40;
caseStudyHeaderView.backgroundColor = [UIColor clearColor];
[self.view addSubview:caseStudyTableView];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell)
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
[ cell.textLabel setFont:[UIFont boldSystemFontOfSize:13]];
[ cell.textLabel setTextAlignment:NSTextAlignmentLeft];
cell.textLabel.numberOfLines=0;
[ cell.textLabel setTextColor:[UIColor blackColor]];
cell.textLabel.backgroundColor = UIColorFromRGB(0xc8f898);
cell.contentView.backgroundColor = UIColorFromRGB(0xc8f898);
NSLog(@"%@",criteriaNameArray);
cell.textLabel.text = [criteriaNameArray objectAtIndex:indexPath.row];
return cell;
如何更改ios
中的表值。
【问题讨论】:
请澄清你的问题。 检查链接可能对您有帮助:***.com/questions/5094972/uitableview-reload-data 选择器和表格视图是否使用相同的数组? 您将尝试显示您是否在选择器视图中选择了 3 行并将该值添加到文本字段中,以便第三行数据自动显示在 tableview 中?我说的对吗? darshan 对,我只想要这种方式 【参考方案1】:使用UITextField
委托方法:
- (void)textFieldDidEndEditing:(UITextField *)textField
// [criteriaNameArray replaceObjectAtIndex:atIndexToReplace withObject:textField.text];
[self.tableView reloadData]; // Handle the DataSource accordingly in the cellForRowAtIndexPath
【讨论】:
【参考方案2】:在pickerview didselect 方法中尝试[tableView reloadData];
。
【讨论】:
【参考方案3】://in view did load listen for text changed notification
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(textFieldChanged:)
name:UITextFieldTextDidChangeNotification
object:yourTextField]
//Reload the table view Whenever the text field changes the text
-(void)textFieldChanged:(id)sender
[yourTableView reloadData];
【讨论】:
以上是关于当 UIPickerView 值更改时,表行在 ios 中更改的主要内容,如果未能解决你的问题,请参考以下文章
当组件 0 更改时,重置 UIPickerView 的第一个组件的值
UIPickerView - 第一行选择不调用 didSelectRow
当 uitableviewcell 中 uipickerview 的值发生变化时,我需要更新 viewcontroller 中的标签