以模态方式呈现EKCalendarChooser

时间:2011-10-26 23:07:12

标签: ios

我正在尝试在我的应用中呈现新的EKCalendarChooser作为模态视图。我正在使用以下代码执行此操作:

EKCalendarChooser *calendarChooser = [[EKCalendarChooser alloc] 
    initWithSelectionStyle:EKCalendarChooserSelectionStyleMultiple 
     displayStyle:EKCalendarChooserDisplayAllCalendars
     eventStore:self.ekDataSource.eventStore];


calendarChooser.showsDoneButton = YES;
calendarChooser.showsCancelButton = NO;
calendarChooser.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
calendarChooser.delegate = self;

[[self navigationController] presentViewController:calendarChooser animated:YES completion:nil];

我遇到的问题是,当显示视图时,它缺少完成按钮。但是,如果我使用以下代码显示视图:

[[self navigationController] pushViewController:calendarChooser animated:YES];

它运作得很好。显示完成按钮。不应该使用 presentViewController 调用显示完成按钮吗?

提前感谢您的帮助!

PMB

3 个答案:

答案 0 :(得分:1)

经过更多搜索,我发现了以下stackoverflow问题:

Presenting modal view occasionally hides the navigation bar

这解决了我的问题。

答案 1 :(得分:0)

如果当前视图控制器位于导航控制器内,则应继续使用该导航控制器,除非您确实需要更多屏幕空间。然后,您应该使用动画以模态方式显示新的视图控制器,它告诉用户他们正在离开导航控制器的上下文。

[self.navigationController pushViewControllerAnimated:how];

答案 2 :(得分:0)

使用EKClaenderChooserDelegate方法。使用此方法我解决了我的问题

  • (void)calendarChooserDidFinish:(EKCalendarChooser *)calendarChooser

    {     [self.navigationController popToRootViewControllerAnimated:YES];

    }