Iphone 如何在EKEventViewcontroller上自定义back barbutton
它尝试使用下面的代码段用我自己的按钮自定义back bar按钮。这没有效果,因为它看起来像默认的后退按钮Iphone 如何在EKEventViewcontroller上自定义back barbutton,iphone,uiviewcontroller,ekevent,childviewcontroller,backbarbuttonitem,Iphone,Uiviewcontroller,Ekevent,Childviewcontroller,Backbarbuttonitem,它尝试使用下面的代码段用我自己的按钮自定义back bar按钮。这没有效果,因为它看起来像默认的后退按钮 EKEventViewController*eventView = [[EKEventViewController alloc] initWithNibName:nil bundle:nil]; eventView.event = closestEvent; eventView.allowsEditing = NO; UIButton* leftButton
EKEventViewController*eventView = [[EKEventViewController alloc] initWithNibName:nil bundle:nil];
eventView.event = closestEvent;
eventView.allowsEditing = NO;
UIButton* leftButton = [UIButton buttonWithType:UIButtonTypeCustom];
[leftButton setImage:[UIImage imageNamed:@"closeButton.png"] forState:UIControlStateNormal];
leftButton.frame = CGRectMake(0, 0, 25, 25);
[leftButton addTarget:nil action:nil forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:leftButton];
[self.navigationController pushViewController:eventView animated:YES];
我还尝试将EKEventViewController作为另一个视图控制器的子视图,但我不知道如何正确使用它。无论哪种方式,我都只想自定义“后退”按钮
更新,我尝试了以下方法:
eventView.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:leftButton];
工作正常,但右侧会自动添加一个“完成”按钮(可能是在运行时?)。我尝试禁用右侧栏按钮,但没有效果:
eventView.navigationItem.rightBarButtonItem = nil;
当您按下事件视图控制器时,默认情况下,
Back
按钮将显示标题为“Back”,因此您无需手动更改它。但是,如果您决定更改Back
按钮,可以通过将类型为UIBarButtonItem
的新对象指定给导航项的backBarButtonItem
属性来执行此操作。例如,您可以修改pushController:
方法,在按下事件视图控制器之前,为根视图控制器提供一个自定义的Back
按钮- (void)viewDidLoad
{
[super viewDidLoad];
self.eventStore = [[EKEventStore alloc]init];
NSTimeInterval nsYear = 1 * 365 * 24.0f *60.0f * 60.0f;
NSDate *startDate = [[NSDate date] dateByAddingTimeInterval:-nsYear];
NSDate *endDate = [NSDate date];
NSPredicate *predicate = [self.eventStore predicateForEventsWithStartDate:startDate endDate:endDate calendars:self.eventStore.calendars];
NSArray *events = [self.eventStore eventsMatchingPredicate:predicate];
if ([events count]> 0)
{
EKEvent *event = [events objectAtIndex:0];
EKEventViewController *controller = [[EKEventViewController alloc]init];
controller.event = event;
controller.allowsEditing = YES;
controller.allowsCalendarPreview = YES;
controller.delegate = self;
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"Go BACK OK" style:UIBarButtonItemStylePlain target:nil action:nil];
[self.navigationController pushViewController:controller animated:YES];
}
}
希望,这会有所帮助。当您按下EKEventViewController时,对象已分配,但视图尚未加载。我找到的解决方案是使用UIAPI。试试下面的电话
NSDictionary *textAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]};
[[UIBarButtonItem appearance] setTitleTextAttributes:textAttributes forState:UIControlStateNormal];
不幸的是,这将影响应用程序中的所有UIBarbuttonItems,以下代码对我不起作用。因此,您可能必须手动设置UIBarbuttonItem的其他实例
此代码不适用于我
[[UIBarButtonItem appearanceWhenContainedIn:[EKEventViewController class], nil] setTitleTextAttributes:textAttributes forState:UIControlStateNormal];
看看这个问题的答案:。我已经尝试了该链接中的大部分答案。问题是我没有自定义的视图控制器类,我使用apple的EKEventViewController创建视图控制器并推送它。我尝试创建一个继承EKEventViewcontroller的类,然后自定义barbutton,但无法使其工作。可能有人也能帮忙吗?要了解您的最新情况,请检查此项。不起作用。这只会更改根视图控制器的leftbutton,而不是我要按下的EKEventViewController的back按钮。我已经尝试过了&它对我有效。我已经从苹果网站下载了“EKEventViewController”的示例代码,并添加了一个带有图像的新后退按钮,它成功了。我猜它是SimpleEKDemo,我再次尝试了你的建议,得到了相同的结果。更改根控制器的leftbarbutton如何更改将要推送的详细视图控制器的backbarbutton?是的,它是SimpleEKDemo。让我再次检查一下我所做的尝试&我会尽快向您更新。最初,我误解了您的问题。但现在,我得到了它并编辑了我的答案。请尝试返回(&R)。