我看过这个应用程序似乎是在自定义EKEventViewController。看起来它正在修改EKEventViewController中的tableview并向其追加行。它绝对不仅仅是一个前面的视图 - 它实际上在tableview中
有任何想法如何做到这一点?可以通过子类化EKEventViewController来完成吗? 我已经尝试了子类化 - 但无法弄清楚如何将numberofRowsInSection推送到超类。
似乎我应该能够子类化EKEventViewController并覆盖像这样的UITableView委托函数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [super tableView:tableView numberOfRowsInSection:section];
}
但是因为EKEventViewController不从UITableViewContoller继承(它是一个UIViewController) - 这段代码不会编译。
答案 0 :(得分:2)
通过
计算出来子类EKEventViewController 然后在那个类viewDidAppear 在tableview中增加scrollview的vertical 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)];
}
}