2

我已经看到这个似乎正在自定义 EKEventViewController 的应用程序。看起来它正在修改 EKEventViewController 中的 tableview 并向其附加行。它绝对不仅仅是它前面的一个视图——它实际上是在 tableview 里面

自定义 EKEventViewController

任何想法如何做到这一点?这可以通过继承 EKEventViewController 来完成吗?我已经尝试过子类化 - 但无法弄清楚如何将 numberofRowsInSection 推送到超类。

看来我应该能够继承 EKEventViewController 并像这样覆盖 UITableView 委托函数

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [super tableView:tableView numberOfRowsInSection:section];
}

但是由于 EKEventViewController 没有从 UITableViewContoller 继承(它是一个 UIViewController) - 此代码将无法编译。

4

1 回答 1

2

想通了

子类 EKEventViewController 然后在该类 viewDidAppear 中增加 tableview 中滚动视图的垂直 contentSize 在最后一行结束后添加到我的小视图控制器中

+(void) viewDidAppear:(BOOL)animated
    {
    if ([self.event.location length]>0)
    {
            UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle: nil];
        _mev = (MapEventView*)[mainStoryboard instantiateViewControllerWithIdentifier: @"MAP_EVENT_VIEW"];

        UITableView* tv=[self getEKEventTableView];
        //tv.showsVerticalScrollIndicator=YES;
        tv.contentSize=CGSizeMake(tv.contentSize.width, tv.contentSize.height+MAP_EVENT_VIEW_PADDING+_mev.view.frame.size.height);

        // get last row in last sectoin
        int lastSection=[tv numberOfSections]-1;
        int lastRow=[tv numberOfRowsInSection:lastSection]-1;
        NSIndexPath *indexPath = [NSIndexPath indexPathForRow:lastRow inSection:lastSection];
        UITableViewCell* cell=[tv cellForRowAtIndexPath:indexPath];

        float mapeventview_origin=cell.frame.origin.y+cell.frame.size.height;

        TGLog(@"%d,%d %f %f", lastSection, lastRow, cell.frame.origin.y, mapeventview_origin);
        TGLog(@"event %@ location %@", self.event.title, self.event.location);
        _mev.ewc=[[EKEventWithCoords alloc] init];
        _mev.ewc.event=self.event;

        [tv addSubview:_mev.view];
        [_mev.view setCenter:CGPointMake(_mev.view.center.x, _mev.view.center.y+mapeventview_origin)];
    }
}
于 2012-09-22T16:15:43.650 回答