我有一个tableview和一个detailview,与segues相关联。 我希望detailview的标题是所选单元格的标题。
如果我在GradeDetail.m
中使用此代码,它可以正常工作,但当然是静态的:
self.navigationController.title = @"Title goes here";
另一方面,如果我使用它,它不起作用,但应该是动态的:
self.navigationItem.title = grade.fag;
我在必要时导入了课程Grade
,并且在课堂上定义了“fag”(丹麦语中的“学校科目”,而不是同性恋)属性。
以下是tableview代码的摘录:
...
- (id)initWithCoder:(NSCoder *)aDecoder
{
if ((self = [super initWithCoder:aDecoder]))
{
grades = [[NSMutableArray alloc] init];
Grade* grade = [[Grade alloc] init];
grade.fag = @"Dansk";
grade.mundtlig = @"7";
[grades addObject:grade];
...
}
return self;
}
推送详细视图的代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
GradeDetail *detailViewController = [[GradeDetail alloc] init];
Grade* grade = [self.grades objectAtIndex:indexPath.row];
detailViewController.grade = grade;
//[self.navigationController pushViewController:detailViewController animated:YES];
}
请注意以上代码,我注释掉了:
[self.navigationController pushViewController:detailViewController animated:YES];
如果我删除了故事板中的segue,并使用这行代码,则详细视图显示正确的标题,但视图未正确加载。 (阅读:我不想使用这行代码,我希望它能在故事板中使用。)
请告诉我您是否希望查看更多代码或澄清上述内容。
答案 0 :(得分:1)
您需要覆盖-prepareForSegue:sender:
以获取传入视图控制器的挂钩并设置所需的任何属性。您还需要在故事板中指定segue标识符。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"ShowGradeDetails"])
{
GradeDetail *detailViewController = (GradeDetail *)segue.destinationViewController;
NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow];
Grade *selectedGrade = [self.grades objectAtIndex:selectedIndexPath.row];
detailViewController.grade = selectedGrade;
}
}
答案 1 :(得分:0)
也许尝试设置viewController的标题:self.title = grade.fag;