EKEditviewController不断在导航栏中显示标题

问题描述 投票:0回答:2

我正在使用EventKit Framework。它的工作几乎完美,但我仍然有一些问题。当我推动某个事件时,它将转到该事件的详细信息。它正确显示了详细信息,我也可以编辑和保存它。问题出在导航栏上。

它在导航栏中显示标题。这些标题是事件详细信息和编辑。而且它没有显示后退按钮,可以返回我的日历。我还应该提到的是,我正在使用Kal Calendar框架。

我正在这样努力推动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;
}
iphone ios objective-c eventkit ekeventkit
2个回答
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,如果苹果将来会更改它并将其嵌入到导航控制器中,则保留导航项。


0
投票

我认为您已在情节提要或nib文件中添加了导航项。去掉它。

制作self.title=nil;self.title=@"";

© www.soinside.com 2019 - 2024. All rights reserved.