在详细视图中,我试图从我的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;
}
答案 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);