无法导航到根视图控制器
Posted
技术标签:
【中文标题】无法导航到根视图控制器【英文标题】:not able to navigate to root view controller 【发布时间】:2014-09-05 13:26:07 【问题描述】:没有调用协议方法。我正在使用弹出控制器。我得到一个 nil 委托,并且没有调用时间表视图控制器中的方法。我哪里错了。我是这个协议的新手。下面是我的代码..我只发布了删除所有其他无用代码的主要代码...我只想在从 PopOverView 控制器中选择一个按钮时从 TimeTable 视图控制器导航到 Root 视图控制器
TimetableView Controller.h
#import <UIKit/UIKit.h>
#import "NotesandReminders.h"
#import "AppDelegate.h"
#import "PopOverViewController.h"
@class PopOverViewController;
@interface TimeTableViewController : UIViewController <UICollectionViewDataSource, UICollectionViewDelegate,TestProtocol>
@property(nonatomic,strong)PopOverViewController *testViewController;
Timetable view controller.m
@interface TimeTableViewController ()
@end
@implementation TimeTableViewController
@synthesize testViewController;
- (void)viewDidLoad
self.testViewController=[[PopOverViewController alloc]init];
testViewController.delegate=self;
-(void)LogOut
[self.navigationController popToRootViewControllerAnimated:NO];
POPOVER VIEW CONTROLLER.H
@protocol TestProtocol <NSObject>
@required
-(void)LogOut;
@end
POP OVER VIEW CONTROLLER.H
#import <UIKit/UIKit.h>
#import "TimeTableViewController.h"
@class TimeTableViewController;
@interface PopOverViewController : UIViewController <UIPopoverControllerDelegate>
id<TestProtocol>delegate;
- (IBAction)out:(id)sender;
@property(nonatomic,strong)TimeTableViewController *testTimeTableViewController;
@property(nonatomic,strong)UIPopoverController *popoverController;
@property(retain) id<TestProtocol>delegate;
@end
POP OVER VIEW CONTROLLER.M
#import "PopOverViewController.h"
@interface PopOverViewController ()
@end
@implementation PopOverViewController
@synthesize delegate;
@synthesize popoverController,testTimeTableViewController;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
return self;
- (void)viewDidLoad
self.delegate=testTimeTableViewController;
[super viewDidLoad];
// Do any additional setup after loading the view.
- (IBAction)out:(id)sender
self.TimeObj=[[TimeTableViewController alloc]init];
[self.TimeObj Signout];
@end
【问题讨论】:
【参考方案1】:我认为问题可能出在viewDidLoad
方法上,当您分配self.delegate=testTimeTableViewController;
时,因为testTimeTableViewController
从未被初始化。
由于您在创建视图控制器时分配了委托,因此不应再次分配它。
另外,您不能使用retain
代表,而是使用weak
引用。
【讨论】:
以上是关于无法导航到根视图控制器的主要内容,如果未能解决你的问题,请参考以下文章