2

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

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

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; 
} 

ответ

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); 
3
self.detailDescriptionLabel.text = self.navigationController.navigationBar.topItem.title; 
+0

странно это я пробовал, но тянет этикетку от моего UITableView вместо , Таким образом, с этим значением я получаю текст ярлыка «овощи» для каждого вида овощей в моем списке - картофель, морковь, зеленая фасоль и т. Д. Может быть, я неправильно настраиваю основную деталь? Я редактирую свой оригинальный пост выше с большим количеством кода. – Jake

+0

oh man !! что вы закодировали в своем приложении ... ??? – samfisher

+0

Внутри моего представления таблицы у меня есть метод didSelectRowAtIndexPath:. Здесь я устанавливаю переменную '* currentLabel', которая извлекает динамические данные из массива и заполняет таблицу. Мне нужно передать это значение String на следующую страницу - я уже делаю это, установив файл navigationItem.title, поэтому я полагаю, что я мог бы просто потянуть это значение вместо этого. Код, который вы мне указали выше, вытаскивает заголовок TableView, а не заголовок detailView. Это проблема, с которой я сталкиваюсь - если я могу предложить дополнительную информацию, пожалуйста, спросите. Но я все еще довольно новичок в Obj-C, так что это битва. – Jake

 Смежные вопросы

  • Нет связанных вопросов^_^