2

EKEventViewController をカスタマイズしているように見えるこのアプリを見てきました。EKEventViewController のテーブルビューを変更し、行を追加しているようです。それは間違いなくその前のビューではなく、実際にはテーブルビューの中にあります

カスタム 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 の scrollview の垂直方向の 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 に答える