我正在创建一个 3 层导航弹出控制器,在第三个弹出控制器上我有一个委托方法来访问父类中的 dismissPopup 方法。我似乎无法调用它,我在父类的函数中的 NSLog 消息甚至没有显示,所以我一定是使用了错误的委托或者我错误地调用了它。
3 个类 ParentViewController 有一个带有按钮的工具栏,该按钮可以调出表格视图 --> RegionViewController 是第一个带有项目的表格视图控制器 --> ConusViewController 是推到导航堆栈上的第二个表格视图控制器。我正在尝试在单击选择后使用委托调用父方法中的方法dismissPopover,以便整个弹出框消失。
在 ConusViewController 中,如果委托有效,我会从父类中的函数中看到“已访问方法”。它没有显示,所以我必须使用错误的委托。
对不起,我的帖子这么罗嗦,我想在这里完成我想要做的事情。谢谢。
父视图控制器.h
#import <UIKit/UIKit.h>
#import "ConusViewController.h"
@interface EnscoWXViewController : UIViewController <ConusViewControllerDelegate> {
UIPopoverController *popoverController;
IBOutlet UIWebView *webImageDisplay;
ConusViewController *cViewController;
}
@property (nonatomic, retain) UIPopoverController *popoverController;
@property (nonatomic, retain) UIWebView *webImageDisplay;
@property (nonatomic, retain) ConusViewController *cViewController;
-(IBAction) buttonShowRegion:(id) sender;
@end
父视图控制器.m
#import "ParentViewController.h"
#import "RegionViewController.h"
@implementation ParentViewController
@synthesize cViewController;
-(IBAction) buttonShowRegion:(id) sender {
...
}
-(void)dismissPopover {
[popoverController dismissPopoverAnimated:YES];
printf("Method Accessed\n");
}
- (void)viewDidLoad {
cViewController = [[ConusViewController alloc] init];
cViewController.delegate = self;
[super viewDidLoad];
}
区域视图控制器.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
switch (indexPath.row) {
case 0: {
ConusViewController *conusViewController = [[ConusViewController alloc] initWithNibName:@"ConusViewController" bundle:nil];
conusViewController.contentSizeForViewInPopover = CGSizeMake(320, 350);
[self.navigationController pushViewController:conusViewController animated:YES];
[conusViewController release];
break;
}
case 1: {
break;
}
}
}
ConusViewController.h
#import <UIKit/UIKit.h>
@protocol ConusViewControllerDelegate <NSObject>
@required
- (void)dismissPopover;
@end
@interface ConusViewController : UITableViewController {
NSMutableArray *conusItems;
id delegate;
}
@property (nonatomic, assign) id <ConusViewControllerDelegate> delegate ;
@end
ConusViewController.m
#import "ConusViewController.h"
#import "ParentWXViewController.h"
@implementation ConusViewController
@synthesize delegate;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *itemRequested = [conusItems objectAtIndex:indexPath.row];
NSLog(@"logging: %@", itemRequested);
[delegate dismissPopover];
[itemRequested release];
}