iOS:从子视图委托给父视图

时间:2014-04-18 07:28:07

标签: ios delegates

这是我想做的事情:

有一个父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;

}

1 个答案:

答案 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,但它可以是您想传递的任何内容。