Метод делегата из поповера не вызывается?

редактировать: решено. см. мой комментарий, почему.. извините этот беспорядок, пока не могу опубликовать ответ сам как новичок..

Приложение для iPad: у меня есть табличное представление и создание экземпляра из accessoryView всплывающего окна с другим табличным представлением. во всплывающем окне я хочу выбрать ячейку и передать этот индекс обратно в rootView.

Я реализовал протокол в PopoverController и соответствовал ему RootViewController.

Почему этот метод backPopover в корневом представлении не вызывается?

Любой намек очень ценится!!

Изменить: эта ссылка раскадровки указывает на контроллер навигации. Сам поповер работает нормально..

RootViewController.h

#import "PopoverViewController.h"


@interface rootViewController : UITableViewController <UIPopoverControllerDelegate, UITableViewDelegate, AddDelegate>
{
    UIPopoverController *popOverController;
}

@property (nonatomic, retain) UIPopoverController *popOverController;
@property (nonatomic) PopoverContent *popoverContent;

RootView.m

-(void) backPopover:(int)index
{
    NSLog(@"index sent:%i", index);
    [popOverController dismissPopoverAnimated:YES];
}


// accessoryView Button
- (void) popOver:(UIButton*)paramSender
{
    UITableViewCell *cell = (UITableViewCell*)paramSender.superview;
    if (cell != nil)
    {

        //Table position for popover
        UIButton *button = (UIButton *)cell.accessoryView;

            if(![self popoverContent])
            {
                popoverContent = [[self storyboard]instantiateViewControllerWithIdentifier:@"PopoverContent"];
                [popoverContent setDelegate:self];
                popOverController = [[UIPopoverController alloc]initWithContentViewController:popoverContent];
                popOverController.popoverContentSize = CGSizeMake(320.0, 600.0);
                [popOverController setDelegate:self];
            }

        CGRect rect = button.frame;
        [popOverController presentPopoverFromRect:rect inView:cell permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    }
}

PopoverController.h

@protocol AddDelegate <NSObject>

- (void)backPopover: (int)index;

@end

@property (nonatomic, weak) id <AddDelegate> delegate;

PopoverController.m

@synthesize delegate;


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    [self.delegate backPopover:indexPath.row];

}

2 ответа

Решение

Проблема была в том, что ссылка на раскадровку фактически указывала на навигационный контроллер. Выше код работает как шарм.

Пожалуйста, попробуйте это.

MyViewController *viewController=[[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; 
UIPopoverController* aPopover = [[UIPopoverController alloc]
                        initWithContentViewController:popupController];
Другие вопросы по тегам