我的观点层次结构是下一个:
我想使用自定义UITableView的委托方法,但我真的不知道如何访问它的委托,因为在我的自定义UIView类中添加了UITableView。 请让我知道,我对这个问题感到困惑。
这是我的代码:
将我的自定义UITableView添加到UIView(我正在使用CollapseClick):
-(void) initMehod{
DetailsView *testView = [[[NSBundle mainBundle] loadNibNamed:@"DetailsView" owner:self options:nil] lastObject];
test1View = testView;
//collapse click init
CGRect viewRect = [test1View frame];
viewRect.origin.x = 10;
test1View.frame = viewRect;
[test1View setBackgroundColor:[UIColor magentaColor]];
self.myCollapseClick.CollapseClickDelegate = self;
[self.myCollapseClick reloadCollapseClick];
// If you want a cell open on load, run this method:
[self.myCollapseClick openCollapseClickCellAtIndex:0 animated:NO];
}
...
我在我的根视图控制器中使用PagedFlowView来添加CustomView:
- (UIView *)flowView:(PagedFlowView *)flowView cellForPageAtIndex:(NSInteger)index{
mainDetailV = (MainDetailView *)[flowView dequeueReusableCell];
if (!mainDetailV) {
mainDetailV = [[[NSBundle mainBundle] loadNibNamed:@"MainDetailView" owner:self options:nil] lastObject];
//mainDetailV.layer.cornerRadius = 6;
mainDetailV.layer.masksToBounds = YES;
}
[usedViewControllers insertObject:mainDetailV atIndex:index];
return mainDetailV;
}
一切都很完美,除了我不能使用我的自定义UITableView委托(例如didSelectRowAtIndexPath:方法)。
编辑:我已解决了我的问题,PagedFlowView实际上处理了标记手势识别器并覆盖了我的自定义tableView委托方法。
类似的问题:
答案 0 :(得分:1)
首先,您的可折叠tableview抽象tableview委托(即它的包装器)。 它为您提供了一个方法didClickCollapseClickCellAtIndex。使用它。
似乎你在理解委托模式时遇到了一些问题。 避免破坏委托模式的级联效应。它使调试变得容易 并有助于理解代码的流程。下图可能会帮助您理解我的意思
在自定义视图中实现didSelectRowAtIndexPath而不是rootViewcontroller。
// This is your custom view -(id)init{ ---- self.myCollapseClick.CollapseClickDelegate = self; ---- } //collapsable delegate -(void)didClickCollapseClickCellAtIndex:(int)index isNowOpen:(BOOL)open { // you need to create your own custom view delegate with mehthod didSelectIndex:index [self.customViewDelegate didSelectIndex:index]; }
在你的rootviewcontroller中你需要这样做
customView.customViewDelegate = self;
-(void)didSelectIndex:(int)index{ // do your stuff here }