2012-09-19 49 views
2

我見過這個應用程序似乎是自定義EKEventViewController。它看起來像修改EKEventViewController中的tableview並向它附加行。這絕對不只是在它的前面視圖 - 它實際上是實現代碼如下自定義EKEventViewController

custom EKEventViewController

任何想法如何做到這一點裏面?這可以通過繼承EKEventViewController來完成嗎? 我已經嘗試了子類化 - 但無法弄清楚如何將numberofRowsInSection推送到超類。

這看來我應該能夠繼承EKEventViewController並重寫的UITableView委託功能,這樣

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

但由於EKEventViewController不從UITableViewContoller繼承(這是一個UIViewController) - 此代碼不能編譯。

回答

2

想通了由

子EKEventViewController 然後在滾動視圖中的tableview 該類viewDidAppear 增加垂直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)]; 
    } 
}