来自popover的委托方法没有被调用?

时间:2013-05-06 19:58:38

标签: ios objective-c ipad delegates popover

编辑:已解决。看到我的评论为什么..对不起这个烂摊子,不能自己作为新手发布答案..

iPad App:我有一个表视图,并从附件中实例化一个带有另一个tableview的popover。在popover中我想选择一个单元格并将该索引传递回rootView。

我在PopoverController中实现了一个协议,并将RootViewController符合它。

为什么根视图中的backPopover方法没有被调用?

任何提示都非常赞赏!!

编辑:该故事板参考指向导航控制器。 popover本身很好..

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 个答案:

答案 0 :(得分:0)

请试一试。

MyViewController *viewController=[[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; 
UIPopoverController* aPopover = [[UIPopoverController alloc]
                        initWithContentViewController:popupController];

答案 1 :(得分:0)

问题在于故事板参考,它实际上指的是导航控制器。上面的代码就像一个魅力。