ios Storyboard - 将标题推送到View Controller

时间:2012-06-13 01:21:05

标签: ios uinavigationcontroller storyboard

这段代码是否假设在我连接的ViewController上设置标题?

2个UIViewControllers通过push segue连接 - 第一个嵌入在NavigationController中。

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

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

 }
 }

它对我不起作用,但语法是正确的。

预先谢谢: - )

3 个答案:

答案 0 :(得分:2)

上述答案对我有用,只有一个例外......

更改

self.title = myTitle;

self.navigationItem.title = myTitle;

答案 1 :(得分:1)

使用目标VC中的属性在目标viewcontroller的viewDidLoad中设置标题:

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

然后在MyDestinationViewController.h中的viewDidLoad事件中:

@property (nonatomic,strong) NSString *myTitle;

在MyDestinationViewController.m中:

@synthesize myTitle;

最后在viewDidLoad

self.title = myTitle;

答案 2 :(得分: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;
    }
}