Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何在EKEventViewcontroller上自定义back barbutton_Iphone_Uiviewcontroller_Ekevent_Childviewcontroller_Backbarbuttonitem - Fatal编程技术网

Iphone 如何在EKEventViewcontroller上自定义back barbutton

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

它尝试使用下面的代码段用我自己的按钮自定义back bar按钮。这没有效果,因为它看起来像默认的后退按钮

    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)。