Я разрабатываю приложение, в котором пользователь может вводить продукты и информацию об этих продуктах. Вся информация о продуктах вводится в пользовательскую ячейку UITableViewCell. Я также хочу разрешить пользователю добавлять изображения продуктов. Для этого мне нужно показать всплывающее окно, содержащее UIImagePickerController. когда я это делаю, Xcode дает мне эту ошибку:
Всплывающие окна не могут быть представлены из представления, в котором нет окна.
Когда пользователь нажимает кнопку, чтобы добавить изображение (называемое addImage
), моя пользовательская ячейка запускает это действие внутри моего TableView:
- (void) addImage
{
CustomCell *customcell = [[CustomCell alloc] init];
itemImagePicker = [[UIImagePickerController alloc] init];
itemImagePicker.delegate = self;
itemImagePicker.sourceType= UIImagePickerControllerSourceTypePhotoLibrary;
itemImagePopover = [[UIPopoverController alloc] initWithContentViewController:itemImagePicker];
[itemImagePopover presentPopoverFromRect:customCell.addImage.bounds inView:self.tableView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
моя ячейкаForRowAtIndexPath выглядит так:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CustomCellIdentifier = @"CustomCellIdentifier ";
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier: CustomCellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell"
owner:self options:nil];
for (id oneObject in nib) if ([oneObject isKindOfClass:[CustomCell class]])
cell = (CustomCell *)oneObject;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
NSUInteger *row = [indexPath row];
Model *model = self.products[indexPath.row];
cell.itemName.text = model.itemName;
cell.itemDescription.text = model.itemDescription;
cell.itemPrice.text = model.itemPrice;
cell.itemPrice.delegate = self;
cell.itemName.delegate = self;
cell.itemDescription.delegate = self;
NSLog(@"%@", cell.itemPrice);
return cell;
}
(«модель» — это настраиваемый класс. Каждый экземпляр этого класса представляет один продукт. Каждый раз, когда пользователь добавляет строку в табличное представление, один экземпляр этого класса добавляется в массив.)
Я искал SO и google весь день, и я не нашел никакого решения о том, как это работает с пользовательской ячейкой, только о том, как это работает в didSelectRowAtIndexPath и при нажатии кнопки раскрытия.
Итак, мой вопрос краток: как правильно отобразить всплывающее окно при нажатии кнопки внутри пользовательской ячейки?
Заранее спасибо, любая помощь будет очень признательна.