在我的第一个VC(postVC)中,我有以下代码将导航栏标题设置为用户名:
// Set nav bar items.
[self.navigationController setNavigationBarHidden:NO animated:NO];
NSString *title = [NSString stringWithFormat:@"@%@'s Posts",[userPassed username]];
self.navigationItem.title = title;
然而,这里有一个问题,当我通过这种方法(推VC)调用第二个VC(detailVC)时,中的左侧栏按钮项目的标题显示第二个VC "返回"但我希望它的标题能够跟随之前VC中的标题( 1st VC )。
- (void) didSelectItemFromCollectionView:(NSNotification *)notification
{
NSDictionary *cellData = [notification object];
if (cellData)
{
if (!self.detailViewController)
{
self.detailViewController = [[PAWUserPostsDetailViewController alloc] initWithNibName:@"PAWUserPostsDetailViewController" bundle:nil];
}
self.detailViewController.detailItem = cellData;
[self.navigationController pushViewController:self.detailViewController animated:YES];
}
}
如果我改变
self.navigationItem.title = @"test";
它按预期工作。在第二个VC 中,左侧栏按钮项目的标题显示为" test"我想要的。 所以,要明确的是,我的问题是如何使左栏按钮项目的标题跟随前一个VC的标题,该标题因用户名而异。
答案 0 :(得分:1)
这是一种锻炼,虽然可能不是最有效的:
在PAWUserPostsDetailViewController的头文件中创建一个属性
@property (strong, nonatomic) NSString *backButtonTitle;
然后返回视图控制器,在那里选择行并将其放在didSelectItem方法中:
NSString *backTitle = [NSString stringWithFormat:@"@%@'s Posts",[userPassed username]];
PAWUserPostsDetailViewController *detailVC = [[PAWUserPostsDetailViewController alloc] initWithNibName:@"PAWUserPostsDetailViewController" bundle:nil];;
detailVC.backButtonTitle = backTitle;
然后返回到你的PAWUserPostsDetailViewController.m并像往常一样设置它:
self.navigationItem.title = backButtonTitle;
答案 1 :(得分:1)
在postVC.h文件中
@property (strong, nonatomic)NSString*title;
在postVC.m文件中
title = [NSString stringWithFormat:@"@%@'s Posts",[userPassed username]];
self.navigationItem.title = title;
self.detailViewController.newtitle=self.title;
[self.navigationController pushViewController:self.detailViewController animated:YES];
详细VC.h文件
@property (strong, nonatomic) NSString*newtitle;
详细介绍VC文件
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:newtitle style:UIBarButtonItemStylePlain target:self action:@selector(back:)];
答案 2 :(得分:0)
首先尝试这个:
NSString *title = [NSString stringWithFormat:@"@%@'s Posts",[userPassed username]];
// If it`s to long try this:
if ([title length] > 7)
{
title = [title substringWithRange:NSMakeRange(0, 6)];
}
self.title = title;
第一个选项没有任何理由不起作用,但这是另一个选择:
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] init];
if ([title length] > 7)
{
title = [title substringWithRange:NSMakeRange(0, 6)];
}
backButton.title = title;
self.navigationItem.backBarButtonItem = backButton;
如果标题很长,按钮的名称将会回来,