1

如果文本本身无法更改并且需要替换按钮,那么还请说明如何制作委托方法

- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker

仍然被替换按钮调用?

任何帮助是极大的赞赏。

4

1 回答 1

2

经过一番摆弄,这奏效了:

包含UINavigationControllerDelegate在目标.h文件中。将以下内容添加到.m文件中:

- (void) showAddressBook {
    ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
    picker.peoplePickerDelegate = self;
    // use delegate to change cancel text to done on picker that pops up
    picker.delegate = self;
    [self presentViewController:picker animated:true completion:nil];
}

// replace button now that controller is initialized
- (void)navigationController:(UINavigationController*)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    if([navigationController isKindOfClass:[ABPeoplePickerNavigationController class]]) {

        UIBarButtonItem *obbi = navigationController.topViewController.navigationItem.rightBarButtonItem;

        UIBarButtonItem *bbi = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:obbi.target action:obbi.action];
        navigationController.topViewController.navigationItem.rightBarButtonItem = bbi;
    }
}
于 2013-10-02T19:10:11.090 回答