Скрыть кнопку UIPickerview On Done в UITableView - PullRequest
1 голос
/ 03 апреля 2012

У меня есть UITextField в каждой ячейке UITableview, и я добавил UIPickerview в качестве inputView для UITextField и показываю кнопкой Done на его панели инструментов

Мой вопрос: как я могу скрыть это всплывающее окно (панель выбора + панель инструментов) по нажатию кнопки «Готово»? и показать выбранное значение выбора в текстовом поле в конкретной ячейке?

Спасибо и С уважением

Редактировать: Код

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";
        PremiumProductsDescriptionCell *cell = (PremiumProductsDescriptionCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[[PremiumProductsDescriptionCell alloc] initShoppingCartCellWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    }

ShopProduct *p = (ShopProduct *)[[ShopProduct GetShoppingCart] objectAtIndex:indexPath.row];

cell.Quantity.text = [NSString stringWithFormat:@"%d",p.Quantity];

    UIPickerView *quantityPicker = [[UIPickerView alloc] init];
    quantityPicker.dataSource = self;
    quantityPicker.delegate = self;
    UIToolbar *myToolbar = [[UIToolbar alloc] initWithFrame:
                            CGRectMake(0,0, 320, 44)]; 

    UIBarButtonItem *doneButton =
    [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
                                                  target:self action:@selector(hideKeyBoard)];

quantityPicker.tag = indexPath.row;
    [myToolbar setItems:[NSArray arrayWithObject: doneButton] animated:NO];

    cell.Quantity.inputAccessoryView = myToolbar;

    cell.Quantity.inputView = quantityPicker;


    cell.Quantity.delegate = self;

    return cell;

}

Решено: Я взял переменную currentTextBox и добавил следующий метод и изменил размер первого респондента при нажатии кнопки «Готово»:)

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    currentTextBox = textField;
}

Ответы [ 3 ]

1 голос
/ 03 апреля 2012

UIPopOver не может быть отстранен от их класса, и вам нужно отстранить его от вызывающего класса.Вы должны вызвать метод dismiss из класса вызова popover, когда пользователь нажимает кнопку «Готово»

-(void)doneButtonClikd
   { ParentClass *viewController=[ParentClass alloc]init];
     [viewController dismissPopOver];
    }

Я думаю, что это решит вашу проблему. Для вашего input-

   -(void)doneButtonclikd 
        {  [selectedTextfield resignFirstResponder];
         }

Не забудьте сохранитьтекущее выделенное текстовое поле.

0 голосов
/ 03 апреля 2012

Используйте метод [self.view endEditing: YES].

0 голосов
/ 03 апреля 2012

Если вы поместите UIPickerView в поповер, вот как это сделать:

  UIPopoverController* popover = ....
  UIBarButtonItem* doneButton = ....
  [doneButton addTarget:self action:@selector(closeMe) 
      forControlEvents:UIControlEventTouchUpInside]
  // ....


- (void)closeMe
{
  // Assuming popover is really a field or something...
  [popover dismissPopoverAnimated:YES];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...