第一个ViewController控制器。 h文件
@protocol MyClassNameDelegate <NSObject>
-(void)getClassName:(NSString *)strClassName;
@end
@interface ViewController : UIViewController<MyClassNameDelegate>
{
id <MyClassNameDelegate>delegate;
}
@property (nonatomic,strong)id<MyClassNameDelegate>delegate;
第一个ViewController控制器。 M档
-(void)getClassName:(NSString *)strClassName
{
self.txtClass.text=strClassName;
}
从另一个View Controller调用此方法
所以我在seconView Controller .h文件中声明协议,如下面的代码
@interface ClassViewController : UIViewController <MyClassNameDelegate> // Adopt protocol here
{
NSArray * arryClass;
}
SecondView。 M档
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
NSString *cellText = cell.textLabel.text;
ViewController * objViewController = [[ViewController alloc]init];
objViewController.delegate=self;
[objViewController.delegate getClassName:cellText]; // Call delegate method from here
NSLog(@"%@",cellText);
}
无法找到协议声明错误。这段代码有什么问题。
提前致谢。
答案 0 :(得分:0)
您是否在ClassViewController.m文件中导入ViewController.h?这恰好触发了错误消息......
答案 1 :(得分:0)
将行[objViewController.delegate getClassName:cellText];
更改为[objViewController getClassName:cellText];
它可以正常工作。
答案 2 :(得分:0)
@property (nonatomic,strong)id<MyClassNameDelegate>delegate;
更改为
@property (nonatomic,weak)id <MyClassNameDelegate> delegateCustom;
并在任何地方使用delegateCustom。也许它会与自定义委托和tableview委托混淆。