当 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 中更改的主要内容,如果未能解决你的问题,请参考以下文章

CSS / Javascript强制html表行在一行

当组件 0 更改时,重置 UIPickerView 的第一个组件的值

UIPickerView - 第一行选择不调用 didSelectRow

当 uitableviewcell 中 uipickerview 的值发生变化时,我需要更新 viewcontroller 中的标签

检测 UIPickerView 何时开始更改/移动

使用工具栏按钮更改 UIPickerView 值