Как получить значение self.navigationItem.title и установить в качестве новой переменной? - PullRequest
2 голосов
/ 23 января 2012

В подробном представлении я пытаюсь получить заголовок элемента навигации, который динамически устанавливается из моего UITableView. Я хочу установить его в качестве значения NSString - поэтому, например, если мой заголовок «potato», я хочу получить эту строку и установить ее в качестве переменной в моем контроллере представления.

Вот код, который у меня есть. Я попытался установить эту новую переменную в качестве текста UILabel, и она всегда выводит строку «Detail» - мне никогда не удается получить фактическое значение заголовка.

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

Я должен указать, что, если я вручную установлю строку в метку описания (UILabel), она будет работать нормально. Только когда я вытягиваю self.navigationitem.title, он возвращается как «деталь»

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

Таким образом, единственная строка выше выведет эту строку в моем ярлыке. Любые мысли о том, как я могу получить буквальное значение строки моего текущего элемента навигации?

EDIT: Вот код из моего табличного представления, который выдвигает этот новый подробный вид и настройки заголовка Есть ли альтернативный способ передачи этой переменной из табличного представления в подробное представление?

Я имею в виду, что значение currentLabel - это именно то, что мне нужно получить. Однако этот код ниже взят из MasterViewController.m, и мне нужна переменная currentLabel внутри DetailViewController.m. Я не знаю какого-либо способа передачи переменных между контроллерами представления, поэтому, на мой взгляд, самый простой способ решить это - извлечь значение из заголовка навигации 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 ]

3 голосов
/ 24 января 2012

Что вы можете сделать, это установить заголовок нового 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);
3 голосов
/ 23 января 2012
self.detailDescriptionLabel.text = self.navigationController.navigationBar.topItem.title;
...