当视图标题很长时,iOS7 UINavigationBar中显示“back”文本

时间:2013-11-29 09:48:20

标签: objective-c uinavigationcontroller ios7 uinavigationbar

在我的应用程序中,我需要将以前的viewController标题显示给当前的viewController后标题。

它在iOS6中完美运行。

在iOS7中,自动显示“后退”标题,而不是之前的viewController标题。

如何解决iOS7中的问题?

4 个答案:

答案 0 :(得分:29)

在iOS 7中,您不能将后退按钮的标题设置为超过11个字符。

为避免更改视图控制器的标题,但要更改后退按钮的标题,您需要这样做:

上一个视图控制器(将在其上推动下一个视图控制器的控制器)中,您需要设置backBarButtonItem,如下所示:

/**
 *  Notifies the view controller that its view was added to a view hierarchy.
 *
 *  @param  animated                    If YES, the view was added to the window using an animation.
 */
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    self.title = @"My Title Can Be Long";

    self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"ThisIsLimit"
                                                                             style:UIBarButtonItemStylePlain
                                                                            target:nil
                                                                            action:nil];
}

现在,当下一个视图控制器被推到它上面时,后退按钮将是你在backBarButtonItem中放置的任何标题。

答案 1 :(得分:11)

由于声誉不佳,我无法添加评论,因此我发布了答案,而这实际上并不是答案。

但是,

self.navigationController.navigationBar.topItem.title = @"";

写在其中一个答案中,相当于:

self.title = @"";

答案 2 :(得分:6)

试试这个,

self.navigationController.navigationBar.topItem.title = @"";

答案 3 :(得分:4)

iOS 7会自动将后退按钮标题替换为“后退”,甚至完全删除标题以适合当前导航项目的标题。你可能不应该尝试做任何事情,除非尝试缩短你的标题。

如果您想制作简短的标题,可以按照以下方式进行操作

self.title = @"SOME REALLY LONG NAVIGATION BAR TITLE";
UILabel* label=[[UILabel alloc] initWithFrame:CGRectMake(0,0, 200, 40)];
label.text=self.navigationItem.title;
label.adjustsFontSizeToFitWidth=YES;
self.navigationItem.titleView=label;