Я создаю трехслойный всплывающий контроллер навигации, и на третьем всплывающем контроллере у меня есть метод делегата для доступа к методу dismissPopup, который находится в родительском классе.Кажется, я не могу это вызвать, мои сообщения NSLog в функции в родительском классе даже не отображаются, поэтому я должен либо использовать делегирование неправильно, либо я вызываю его неправильно.
У 3 классов ParentViewController есть панель инструментов с кнопкой, которая вызывает представление таблицы -> RegionViewController - первый контроллер представления таблицы с элементами -> ConusViewController - второй контроллер представления таблицы, который помещается в навигациюстек.Я пытаюсь вызвать метод dismissPopover, который находится в родительском методе с делегированием после нажатия на выборку, поэтому весь поповер исчезает.
В ConusViewController, если бы делегирование работало, я бы увидел "Доступ к методу »из функции в родительском классе.Это не показывает, поэтому я, должно быть, неправильно использую делегирование.
Извините за то, что я так многословен в своем посте, я хотел закончить с тем, что я пытаюсь сделать здесь.Спасибо.
ParentViewController.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
ParentViewController.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];
}
RegionViewController.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];
}