У меня есть динамический tableviewcontroller SideBarTableViewController.m / .h.
У меня есть всплывающий контроллер представления - popUpViewController.m / .h Сделали подкласс ячейки SideBarTableViewController -> RegisterTableViewCell.m / .h и добавили кнопку выхода из ячейки к нему. Подключили ячейку к popUpViewController в раскадровке, используя переход «Present As popover», и переходу присвоен идентификатор «popover». Точка привязки в раскадровке сейчас установлена на Tableview, а позже в preparesegue ее изменили.
RegisterTableViewCell.h
@property (weak, nonatomic) IBOutlet UIButton *PopoverAnchorButton;
SideBarTableViewController.m
#import "RegisterTableViewCell.h"
(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if([segue.identifier isEqualToString:@"popover"] && segue.destinationViewController.popoverPresentationController){
UIPopoverPresentationController *popController = segue.destinationViewController.popoverPresentationController;
popController.sourceView = sender;
RegisterTableViewCell *cell = [[RegisterTableViewCell alloc]init];
segue.destinationViewController.popoverPresentationController.sourceRect = CGRectMake(cell.PopoverAnchorButton.frame.size.width/2, cell.PopoverAnchorButton.frame.size.height, 0, 0);
popController.delegate = self;
}
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *cellIdentifier = [menuItems objectAtIndex:indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
RegisterTableViewCell *regcell = [[RegisterTableViewCell alloc]init];
[regcell.PopoverAnchorButton addTarget:self action:@selector(PresentPopover:) forControlEvents:UIControlEventTouchUpInside];
// Configure the cell...
return cell;
}
-(void) PresentPopover:(UIButton *)sender
{
NSLog(@"present popover called ");
[self performSegueWithIdentifier:@"popover" sender:sender];
}
popUpViewController.m
- (IBAction)closeview:(id)sender {
[self.view removeFromSuperview];
}
Проблема:
Всплывающее окно отображается с левого края ячейки, но, как я вижу, есть задержка в представлении всплывающего окна. Обычно при первом щелчке по ячейке всплывающее окно появляется, как и ожидалось,
второй щелчок -> небольшая задержка,
третий -> немного больше задержки ... (хотя задержка не всегда увеличивается, но фиксируется на 6-7 секунд)
позвольте ipad простаивать, скажем, 6 секунд, и снова щелкните в ячейке, сразу же появится всплывающее окно.
двойной щелчок (2 нажатия) в ячейке отображает ее сразу, но с предупреждением:
2016-07-11 22:53:05.462 Player-app_03[1947:590814] Warning: Attempt to present <UINavigationController: 0x125026400> on <SideBarTableViewController: 0x124d258f0> which is already presenting (null)
Что здесь происходит ? я невежественен. Кто-нибудь, пожалуйста, помогите.