这段代码是否假设在我连接的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"];
}
}
它对我不起作用,但语法是正确的。
预先谢谢: - )
答案 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;
}
}