2012-06-13 2 views
0

Является ли этот фрагмент кода для установки названия на ViewController, к которому я подключаюсь?ios Storyboard - нажмите заголовок на контроллер View

2 UIViewControllers подключаются через push-сегмент - первый встроен в NavigationController.

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
if ([[segue identifier] isEqualToString:@"settingsSegue"]) 
{ 

    self.navigationItem.title = [[NSString alloc] initWithFormat:@"Custom Title"]; 

} 
} 

Это не работает для меня, но синтаксис правильный.

Заранее спасибо :-)

ответ

1

Установить заголовок в viewDidLoad места назначения ViewController используя свойство в ВК назначения:

if ([[segue identifier] isEqualToString:@"settingsSegue"]) { 
    MyDestinationViewController *mdvc = segue.destinationViewController; 
    mdvc.myTitle = [[NSString alloc] initWithFormat:@"Custom Title"]; 
} 

Тогда в viewDidLoad событие в MyDestinationViewController.h:

@property (nonatomic,strong) NSString *myTitle; 

В MyDestinationViewController.m:

@synthesize myTitle; 

И, наконец, в viewDidLoad:

self.title = myTitle; 
+0

к сожалению выглядел многообещающим :-) и еще раз нет ошибок, но это не приходит через извините –

+0

я получил это работает - был белокурый момент и забыл связать ViewController в файл заголовка в Раскадке :-) –

2

выше ответ работает для меня с одним исключением ...

Изменить

self.title = myTitle; 

в

self.navigationItem.title = myTitle; 
+0

Ну почему-то значение myTitle не проталкивается - я проверил с NSLog, который возвращает (null) –

0

Вы можете задать заголовок непосредственно в Segue, а также, нет необходимости идти через свойство:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"settingsSegue"]) {  
     segue.destinationViewController.navigationItem.title = @"Custom Title"; 
    } 
} 

Или, что мне нужно, чтобы установить заголовок толкаемом контроллера представления на звание ячейка таблицы, которая была нажата:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"settingsSegue"]) { 
     NSIndexPath *myIndexPath = [self.tableView indexPathForSelectedRow]; 
     UITableViewCell *cell = [self tableView:self.tableView cellForRowAtIndexPath:myIndexPath];   
     segue.destinationViewController.navigationItem.title = cell.textLabel.text; 
    } 
} 
Смежные вопросы