0

这段代码是否假设在我要连接的 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"];

 }
 }

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

提前谢谢:-)

4

3 回答 3

2

上面的答案对我有用,但有一个例外......

改变

self.title = myTitle;

self.navigationItem.title = myTitle;
于 2012-06-13T02:25:46.550 回答
1

viewDidLoad使用目标 VC 中的属性设置目标视图控制器的标题:

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

然后在viewDidLoadMyDestinationViewController.h 中的事件中:

@property (nonatomic,strong) NSString *myTitle;

在 MyDestinationViewController.m 中:

@synthesize myTitle;

最后在viewDidLoad

self.title = myTitle;
于 2012-06-13T01:36:56.227 回答
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;
    }
}
于 2013-07-23T12:17:19.687 回答