2013-02-07 28 views
0

我正在使用EventKit Framework。它的工作幾乎完美,但我仍然有一些問題。當我推動我參加一個活動時,它會涉及該活動的細節。它顯示正確的細節,我也可以編輯和保存。問題在於導航欄。EKEditviewController不斷在導航欄中顯示標題

它顯示導航欄內的標題。這些標題是事件詳細信息和編輯。此外,它不顯示一個後退,回到我的日曆。我還應該提到的是,我正在使用Kal日曆框架。

我正在推動de detailsViewController這樣。

Appointment *appointment = [dataSource appointmentAtIndexPath:indexPath]; 

    // Upon selecting an event, create an EKEventViewController to display the event. 
    self.detailViewController = [[EKEventViewController alloc] initWithNibName:nil bundle:nil]; 
    self.detailViewController.title = @""; 
    detailViewController.event = appointment.event; 

    // Allow event editing. 
    detailViewController.allowsEditing = YES; 

    [calendar.navigationController pushViewController:detailViewController animated:YES]; 

這是我代表看起來像

// Overriding EKEventEditViewDelegate method to update event store according to user actions. 
- (void)eventEditViewController:(EKEventEditViewController *)controller 
      didCompleteWithAction:(EKEventEditViewAction)action { 

    NSError *error = nil; 
    EKEvent *thisEvent = controller.event; 
    controller.title = @""; 
    switch (action) { 
     case EKEventEditViewActionCanceled: 
      // Edit action canceled, do nothing. 
      break; 

     case EKEventEditViewActionSaved: 
      // When user hit "Done" button, save the newly created event to the event store, 
      // and reload table view. 
      // If the new event is being added to the default calendar, then update its 
      // eventsList. 
      if (self.defaultCalendar == thisEvent.calendar) { 
       [self.eventsList addObject:thisEvent]; 
      } 
      [controller.eventStore saveEvent:controller.event span:EKSpanThisEvent error:&error]; 
      //[calendar reloadData]; 
      break; 

     case EKEventEditViewActionDeleted: 
      // When deleting an event, remove the event from the event store, 
      // and reload table view. 
      // If deleting an event from the currenly default calendar, then update its 
      // eventsList. 
      if (self.defaultCalendar == thisEvent.calendar) { 
       [self.eventsList removeObject:thisEvent]; 
      } 
      [controller.eventStore removeEvent:thisEvent span:EKSpanThisEvent error:&error]; 
      //[calendar reloadData]; 
      break; 

     default: 
      break; 
    } 
    // Dismiss the modal view controller 
    [controller dismissModalViewControllerAnimated:YES]; 

} 


// Set the calendar edited by EKEventEditViewController to our chosen calendar - the default calendar. 
- (EKCalendar *)eventEditViewControllerDefaultCalendarForNewEvents:(EKEventEditViewController *)controller { 
    EKCalendar *calendarForEdit = self.defaultCalendar; 
    return calendarForEdit; 
} 

回答

0

我想你已經在故事板或筆尖文件添加導航項目。去掉它。

make self.title = nil;或self.title = @「」;

+0

我無法刪除它。我認爲這是因爲我嵌入了導航控制器。 – Steaphann

+0

@StefGeelen:爲什麼你不能刪除它 –

+0

因爲一旦你將VC嵌入到導航控制器中。它會自動將它添加到您的VC。 – Steaphann

0

我想出了這個解決方案:

EKEventEditViewController * controller = [[EKEventEditViewController alloc] init]; 
    controller.eventStore = self.eventStore; 
    controller.event = result; 
    controller.title = @""; 
    controller.navigationItem.title = @""; 
    controller.navigationItem.titleView = [UIView new]; 
    NSArray * array =controller.navigationBar.items; 
    UINavigationItem * titleItem = array.firstObject; 
    titleItem.title = @""; 
    controller.editViewDelegate = (id)self; 
    [self presentViewController:controller animated:YES completion:NULL]; 

EKEventEditViewController未嵌入導航控制器,它有自己的UINavigationBar,我把導航項目,如果蘋果將在未來改變這一點,把它嵌入在導航控制器中。