这是我想做的事情:
有一个父ViewController
。在父级加载时,会调用ChildVC
,其中包含UITableView
。
现在,在childView的表的didSelectRowAtIndexPath
方法中,我希望将选定的单元格内容传递给parentView。从parentView我希望加载第二个viewController。
我如何通过委托来完成这项工作?
编辑:
Child :
@class ViewController;
@protocol CustomViewControllerDelegate;
@interface CustomViewController : UITableViewController
{
AppDelegate *appDelegate;
id<CustomViewControllerDelegate> delegate;
}
@property(nonatomic, weak) id<CustomViewControllerDelegate> delegate;
@end
@protocol CustomViewControllerDelegate
-(void)didSelectRow:(NSString *)str;
@end
parent
@class CustomViewController;
@interface ViewController : UIViewController<CustomViewControllerDelegate> // i get the error here
{
AppDelegate *appDelegate;
}
答案 0 :(得分:2)
On ChildVC声明一个协议:
@protocol ChildVCDelegate
- (void)didSelectCell:(SomeContent *)content;
@end
还要添加委托:
@property (nonatomic, weak) id<ChildVCDelegate> delegate;
在didSelectRowAtIndexPath的实现中,添加:
if (_delegate) {
[_delegate didSelectCell:someContent];
}
在父视图控制器实现didSelectCell
中,当它创建/显示ChildVC时,将其设置为委托。
我不确定您想要传递给父母的内容是什么类型,所以我将其表示为SomeContent,但它可以是您想传递的任何内容。