Ios5 未从子didSelectRowAtIndexPath调用父协议委托方法

Ios5 未从子didSelectRowAtIndexPath调用父协议委托方法,ios5,protocols,Ios5,Protocols,我只为iOS开发了几个月,并且在很多场合使用了协议,但是我在这个问题上被困了几天 这是我的密码 子头文件:QuoteSelections.h @protocol myDelegate @optional -(void)selectedValueIs:(NSString *)value; @end @interface QuoteSelections : UITableViewController<UITableViewDataSource, UITableViewDelegate

我只为iOS开发了几个月,并且在很多场合使用了协议,但是我在这个问题上被困了几天

这是我的密码

子头文件:QuoteSelections.h

@protocol myDelegate
 @optional -(void)selectedValueIs:(NSString *)value;   
@end

@interface QuoteSelections : UITableViewController<UITableViewDataSource, UITableViewDelegate> {

}

@property (retain, nonatomic) NSMutableArray *ArrDetails;

@property (assign) id<myDelegate> delegate;

@end
@protocol myDelegate

    @optional -(void)selectedValueIs:(NSString *)value;

@end


@interface QuoteSelections : UITableViewController<UITableViewDataSource, UITableViewDelegate>
{

}


@property (assign) id<myDelegate> myDelegate;
我使用测试字符串调用了委托方法selectedValueIs

这是父头文件:newQuoteSec.h

@interface newQuoteSec : UITableViewController <myDelegate>  {
    QuoteSelections *quoteSelections;  }
@interface newQuoteSec : UITableViewController <STComboTextDelegate, STDateTextDelegate, JSONRPCServiceDelegate, UITextFieldDelegate, UITableViewDelegate, myDelegate>
{
    QuoteSelections *quoteSelections;
}
我已经在viewDidLoad中设置了子控制器的委托,我认为这应该足以调用我的selectedValueIs方法,但事实并非如此。为什么?

这是约格什推荐的编辑版本

目标设置为第二个视图控制器中选定项目的值,以填充第一个视图控制器中的文本字段

QuoteSelections.h

@protocol myDelegate
 @optional -(void)selectedValueIs:(NSString *)value;   
@end

@interface QuoteSelections : UITableViewController<UITableViewDataSource, UITableViewDelegate> {

}

@property (retain, nonatomic) NSMutableArray *ArrDetails;

@property (assign) id<myDelegate> delegate;

@end
@protocol myDelegate

    @optional -(void)selectedValueIs:(NSString *)value;

@end


@interface QuoteSelections : UITableViewController<UITableViewDataSource, UITableViewDelegate>
{

}


@property (assign) id<myDelegate> myDelegate;
newQuoteSec.h

@interface newQuoteSec : UITableViewController <myDelegate>  {
    QuoteSelections *quoteSelections;  }
@interface newQuoteSec : UITableViewController <STComboTextDelegate, STDateTextDelegate, JSONRPCServiceDelegate, UITextFieldDelegate, UITableViewDelegate, myDelegate>
{
    QuoteSelections *quoteSelections;
}
编辑

在设置委托之前,我插入了一个NSLog

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *valueString = @"Test";

    NSLog(@"Showing the delegate didSelectRowAtIndexPath%@", self.myDelegate);

    selectedValue = valueString;

    [self.myDelegate selectedValueIs:valueString];

    [self.navigationController popViewControllerAnimated:YES];
}
输出窗口显示null

2012-11-27 10:23:59.562米洛安[18225:c07]显示代理didSelectRowAtIndexPathnull

你知道为什么吗?其他一切看起来都很好


我也在使用故事板

更改QuoteSelections控制器类中委托的名称,因为它已经有一个delegate UITableViewDelegate属性

改变

@property (assign) id<myDelegate> delegate;


而且在所有其他地方也会改变。

您好,谢谢您的回复,我已经改变了,这没有什么不同,我在想,如果我缺少的是didSelectRowAtIndexPath方法something@Shy9010是否调用了didSelectRowAtIndexPath方法?是,正在调用,我检查了self.delegate!=nil,但它设置为nil,您的ViewDidLoad方法正确吗。。它应该包含quoteSelections.myDelegate=self;是的,我的viewDidLoad确实包含quoteSelections.myDelegate=self如上所示,我只是不理解为什么不在父级中调用该方法。
@property (assign) id<myDelegate> myDelegate;