2014-09-05 122 views
1

未調用協議方法。我正在使用彈出控制器。我得到一個無委託和時間表視圖控制器中的方法不被調用。我哪裏錯了。我是這個協議的新手。下面是我的代碼..我剛剛發佈僅主代碼刪除所有其他無用的代碼...我只是想從時間表視圖控制器導航到從PopOverView控制器無法導航到根視圖控制器

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參考。

相關問題