无法导航到根视图控制器

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 引用。

【讨论】:

以上是关于无法导航到根视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何关闭相机并导航到根视图控制器?

弹出到根视图控制器时导航栏消失

返回导航到根视图控制器后,折叠的大标题导航栏变得展开

单击按钮导航到根视图控制器

StoryBoard 导航到根视图控制器

弹出到根视图控制器,没有表视图的动画崩溃