1

我的问题很简单:如何更改 UIImagePickerController 导航栏中栏按钮的更改标题?我为 UIImagePickerController 创建了控制器(由按钮上的压力触发),然后尝试修改其属性:

- (IBAction)chooseFromRoll:(id)sender {

    if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeSavedPhotosAlbum]){
        UIImagePickerController *imagePicker =
        [[UIImagePickerController alloc] init];

        imagePicker.navigationBar.tintColor = [UIColor colorWithRed:0.42 green:0.18 blue:0.66 alpha:1.0];
        //imagePicker.navigationItem.title = @"Scegli foto profilo";

        imagePicker.delegate = self;
        imagePicker.sourceType =
        UIImagePickerControllerSourceTypePhotoLibrary;
        imagePicker.mediaTypes = [NSArray arrayWithObjects:
                                  (NSString *) kUTTypeImage,
                                  nil];
        imagePicker.allowsEditing = NO;


        [imagePicker.navigationController.navigationItem.rightBarButtonItem  setTitle:@"Annulla"];
        [self presentViewController:imagePicker animated:YES completion:nil];
    }
}

但没有任何改变,只有导航栏被正确修改。

这是函数 willShowViewController 的代码:

- (void) navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 30)];
    label.textAlignment = 2;
    label.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, label.frame.size.width-200,label.frame.size.height);
    label.adjustsFontSizeToFitWidth = YES;
    label.font = [UIFont fontWithName:@"Futura" size:15.0];
    [label setFont:[UIFont boldSystemFontOfSize:16.0]];
    [label setBackgroundColor:[UIColor clearColor]];
    [label setTextColor:[UIColor whiteColor]];
    [label setText:@"Scegli foto profilo"];

    [navigationController.navigationBar.topItem setTitleView:label.viewForBaselineLayout];

    [navigationController.navigationBar.topItem.rightBarButtonItem setTitle:@"Annulla"];



}

你能告诉我哪里错了吗?

谢谢

4

1 回答 1

5

这是用于在 uiimage 选择器中调整导航栏标题的代码片段。

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
UINavigationItem *ipcNavBarTopItem;

// add done button to right side of nav bar
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Photos"
                                                               style:UIBarButtonItemStylePlain 
                                                              target:self 
                                                              action:@selector(saveImages:)];

UINavigationBar *bar = navigationController.navigationBar;
[bar setHidden:NO];
ipcNavBarTopItem = bar.topItem;
ipcNavBarTopItem.title = @"Photos";
ipcNavBarTopItem.rightBarButtonItem = doneButton;
}

希望这会帮助你。

编辑:

第一个问题的答案是肯定的,你可以使用 ibaction 或者只使用我上面提供的方法来创建按钮,两者都应该工作。如果您使用不作为,请确保在其中声明您的控制器,以便您可以使其出现并从操作方法中将其关闭。第二个问题的答案如果您想更改在显示相册中的图像选择器时显示的视图的标题,那么您需要创建一个新的子视图并将其弹出以允许用户选择所需的图像然后您可以按照我上面的方式更改标题。过程漫长,不推荐。第三个问题的答案,请尝试在声明按钮的地方使用以下代码片段,

[btn.titleLabel setFont:[UIFont boldSystemFontOfSize:13]];

其中 btn 是按钮的名称,您可以修改字体名称和大小。我希望我的回答可以帮助你。祝你好运,如果您需要更多帮助,请告诉我。

于 2013-07-18T03:23:43.490 回答