2014-11-21 136 views
0

我不知道为什么我的委托方法没有被调用。下面是我的代码。请告诉我我犯了什么错误。 我已经完成了所有的设置,我相信我犯了一个愚蠢的错误。我的委托方法没有被调用。任何帮助将不胜感激委托方法不叫

LSFiveViewController.h

@protocol OneToOne; 
    @protocol OneToOne <NSObject> 
    @optional 
    -(void)dismissPopOverlsfive; 
    @end 

    #import <UIKit/UIKit.h> 
    #import "AppDelegate.h" 
    #import "TimeTableViewController.h" 


    @class TimeTableViewController; 

    @interface LearningSessionFiveDetailsViewController : UIViewController<UITextFieldDelegate> 
    { 
     NSString *bookingString; 
    } 

    @property(nonatomic,weak)id<OneToOne>OneToOne; 

    @end 


**LSFiveViewController.m** 


    @synthesize sessionAndDateLabelObj,OneToOne 

    - (void)viewDidLoad 
    { 

     [super viewDidLoad]; 

     // Do any additional setup after loading the view. 
    } 


    - (IBAction)BookSingleSessionAction:(id)sender 
    { 


    if (self.OneToOne && [self.OneToOne respondsToSelector:@selector(dismissPopOverlsfive)]) 
     { 
      [self.OneToOne dismissPopOverlsfive]; 
     } 

    } 

    @end 

TimeTableViewController.h

#import "OneToOneViewController.h" 
#import "LearningSessionFiveDetailsViewController.h" 
//other codes 

@property(nonatomic,strong)LearningSessionFiveDetailsViewController *LSFiveObj; 

@end 

TimeTableViewController.m

#import "TimeTableViewController.h" 

#import "LearningSessionFiveViewController.h" 
#import "UIAlertView+Blocks.h" 

- (void)viewDidLoad 
{ 
LSFiveObj=[[LearningSessionFiveDetailsViewController alloc]init]; 
    self.learnSearchFiveClassObj.OneToOne=self; 
} 

-(void)dismissPopOverlsfive 
{ 
    This method is not being called 

} 
+0

您是否在任何地方使用'setDelegate:'? – 2014-11-21 13:56:06

+0

self.learnSearchFiveClassObj.OneToOne = self; 这部分代码将作为“集合委托”工作 – iOSDeveloper 2014-11-21 13:58:50

+0

尝试将“< OneToOne >”添加到“TimeTableViewController”。尝试检查“如果”中的哪一项测试为否。 – Larme 2014-11-21 14:05:59

回答

1

请将代替

self.learnSearchFiveClassObj.OneToOne=self; 

self.LSFiveObj.OneToOne=self; 

,并在你的类添加OneToOne协议

+0

我添加了所有这些...不工作 – iOSDeveloper 2014-11-21 14:48:54

+0

你能告诉我你在使用Storyboard还是Xib? 如果Storyboard那么你正在初始化viewcontroller实例是错误的。 使用此 LSFiveObj = [self.storyboard instantiateViewControllerWithIdentifier:@“storyboard id”]; – 2014-11-23 06:48:31

1

这里这条线:

self.learnSearchFiveClassObj.OneToOne=self; 

应该

self.LSFiveObj.OneToOne=self; 

一般而言,属性名称不应以大写字母开头,仅适用于类。

+0

是的,我知道它只是一个拼写错误 – iOSDeveloper 2014-11-22 06:36:52