UIPopover关闭选择

时间:2013-08-04 15:53:05

标签: objective-c delegates protocols

首先我要说的是,我已经查看过有关此问题的所有堆栈溢出问题,但没有人提供帮助所以我认为我会自己启动。

问题:如果像其他许多问题一样被选中,我不能忽略这个弹出窗口。

区别:他们所有的方式都没有用。

所以,让我们看一下代码:

在我的表视图controller.h中:

#import <UIKit/UIKit.h>


@protocol PopoverDelegate <NSObject>

-(void)didRowAtIndexPathIsSelected;

@end


@interface tableViewController : UITableViewController

@property (strong, nonatomic) id<PopoverDelegate> myPODelegate;

在我的表视图中,controller.m:

#import "tableViewController.h"

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [_myPODelegate didRowAtIndexPathIsSelected];
    NSLog(@"IS it Gone?");
}

然后在我的Main View Controller.h中

#import <UIKit/UIKit.h>
#import "tableViewController.h"

@interface MainView : UICollectionViewController <PopoverDelegate>

@property (nonatomic, strong) TableViewController *tvController;
@property (nonatomic, strong) UIPopoverController *tvPopover;

主视图Controller.m:

-(void)didRowAtIndexPathIsSelected
{

    NSLog(@"Dismissing now");
    [tvPopover dismissPopoverAnimated:YES];
    tvPopover = nil;
}

感谢所有帮助。

编辑:

我一直在尝试许多不同的调试思路并尝试过:

NSLog(@"%@", _myPODelegate);

在didSelectRowAtIndexPath内部,它返回(null)。

1 个答案:

答案 0 :(得分:0)

你必须在MainView类中设置你的委托,在那里你要分配tvController的对象:

  

tvController。 myPODelegate = self