Как вставить значение в текстовое поле пользовательской ячейки из окна выбора при нажатии пользователем на текстовое поле? - PullRequest
0 голосов
/ 26 сентября 2011

У меня есть табличное представление, в котором я добавляю пользовательскую ячейку.В пользовательской ячейке у меня есть текстовое поле.В этом текстовом поле я хочу вставить значение из представления выбора.Окно выбора открывается, когда пользователь нажимает на текстовое поле.У меня есть следующий код для этой цели, но я не получаю значение в текстовом поле.code ..

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath 
    {    
        NSString *identifier = [NSString stringWithFormat:@"%d-%d",indexPath.section,indexPath.row];
        cell_object = (Custom_cell2 *)[tableView dequeueReusableCellWithIdentifier:identifier]; 
        if(cell_object == nil) 
        {
            [[NSBundle mainBundle] loadNibNamed:@"Custom_cell2" owner:self options:nil];
        }

        // Configure the cell...
        cell_object.selectionStyle=UITableViewCellSelectionStyleNone;
        cell_object.txt_name.backgroundColor=[UIColor clearColor];
        cell_object.txt_name.userInteractionEnabled=NO;
        NSArray *array = [array_from objectAtIndex:indexPath.section];
        NSString *cellValue = [array objectAtIndex:indexPath.row];  
        cell_object.txt_name.text = [NSString stringWithFormat:@"%@",cellValue];
        cell_object.txt_time.backgroundColor=[UIColor whiteColor];
        cell_object.txt_time.textColor=[UIColor blackColor];
        //cell_object.txt_time.userInteractionEnabled=NO;
        //cell_object.txt_time.text =@"";
        return cell_object;
    }

выше кода для пользовательской ячейки.

    -(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
    {
        myPicker.hidden=FALSE;
        UIToolbar *tool = [[UIToolbar alloc] initWithFrame:CGRectMake(0,0, 320, 44)]; //better code with variables to support view rotation
        tool.tintColor=[UIColor blackColor];
        UIBarButtonItem *space=[[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil] autorelease];
        UIBarButtonItem *doneButton =[[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(done)] autorelease];
        //using default text field delegate method here, here you could call
        //myTextField.resignFirstResponder to dismiss the views
        [tool setItems:[NSArray arrayWithObjects: space,doneButton,nil] animated:NO];
        cell_object.txt_time.inputAccessoryView = tool;
        [myPicker addSubview:tool];
        //you can -release your doneButton and myToolbar if you like
        [[[UIApplication sharedApplication] keyWindow] addSubview:myPicker];        
        return NO;
    }

    - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent: (NSInteger)component
    {
        if (pickerView == myPicker)
        {
            [cell_object.txt_time setText:[NSString stringWithFormat:@"%@",[array_time objectAtIndex: [pickerView selectedRowInComponent:0]]]];
            [table_routine reloadData];
        }
    }

когда я нажимаю на cell_object.txt_time, появляется окно выбора, но оно не вставляет значение из средства выбора в текстовое поле.

в чем ошибка в этом коде?

Заранее спасибо ...

Ответы [ 3 ]

0 голосов
/ 26 сентября 2011

Убедитесь, что вы установили, а также добавьте следующую строку в код, когда собираетесь добавить myPicker в качестве subView.

    myPicker.delegate = self;
0 голосов
/ 26 июля 2013

На самом деле вы не можете установить значение UITableViewCell textlLabel, как это.для любого изменения в tableView вы должны перезагрузить его или перезагрузить ячейку индивидуально.

Решением является создание массива и сохранение значения pickerView в этом массиве.

, затем в cellForRowAtIndexPath:

cell_object.txt_time setText: [array objectAtIndex: indexPath];

попробуйте ..

0 голосов
/ 26 сентября 2011

[pickerView selectRow: 1 inComponent: 0 animated: NO];textField.text = [имя_массива objectAtIndex: [pickerView selectedRowInComponent: 0]];

вы можете попробовать этот код для добавления текста из списка выбора ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...