如何获取self.navigationItem.title的值并设置为新变量?

时间:2012-01-23 17:43:26

标签: objective-c uiviewcontroller uinavigationcontroller uinavigationitem

在详细视图中,我试图从我的UITableView中动态设置导航项目的标题。我想将它设置为NSString值 - 例如,如果我的标题是“土豆”,我想获取该字符串并将其设置为我的视图控制器中的变量。

这是我到目前为止的代码。我尝试将这个新变量设置为我的UILabel文本,它总是输出字符串“Detail” - 我似乎永远无法得到实际的标题值。

NSString *theTitleValue = self.navigationItem.title;
self.detailDescriptionLabel.text = theTitleValue;

我应该指出,如果我手动将字符串设置为我的描述标签(UILabel),它可以正常工作。只有当我拉动self.navigationitem.title它才会回来作为'细节'

self.detailDescriptionLabel.text = @"Some stuff here LMAO!!!";

因此上面的单行将在我的标签中输出该字符串。有关如何获取当前导航项的文字字符串值的任何想法?

编辑: 这是我的表视图中的代码,它推送了这个新的详细信息视图和标题设置。是否有办法将此变量从表视图传递到详细视图?

我的意思是currentLabel的值正是我需要抓取的。但是下面的代码来自MasterViewController.m,我需要DetailViewController.m中的currentLabel变量。我不知道在视图控制器之间传递变量的任何方法,所以在我看来,最简单的解决方法是从DetailViewController的导航标题中提取值。

# MasterViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    // creating NSString value for current vegetable in array
    NSString *currentLabel = [self.vegetablesListing objectAtIndex:indexPath.row];
    DetailViewController *detailVC = [self.storyboard instantiateViewControllerWithIdentifier:@"VegetablesDetailViewCont"];

    [self.navigationController pushViewController:detailVC animated:YES];
    detailVC.navigationItem.title = currentLabel;
}

2 个答案:

答案 0 :(得分:3)

self.detailDescriptionLabel.text = self.navigationController.navigationBar.topItem.title;

答案 1 :(得分:3)

你可以做的是直接设置新的UIViewController标题,甚至连导航控制器的标题。然后在新的详细信息视图中,请调用self.title以提取值。

示例代码:

DetailViewController *detailVC = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewName"];
detailVC.title = currentLabel;
detailVC.navigationItem.title = currentLabel;

[self.navigationController pushViewController:detailVC animated:YES];

然后在您的详细控制器中,您可以使用NSLog检查此值:

NSLog(@"%@", self.title);