【发布时间】:2013-07-16 20:53:46
【问题描述】:
我一直致力于在 Xcode 中设置与 iOS 邮件应用程序类似的 UI,但第二个弹出视图控制器无法正常运行。我正在尝试将“交易”导航栏的标题设置为帐户的名称,但它却设置了 DetailViewController 的标题:
在我选择账号之前:http://i.stack.imgur.com/zo75V.png
在我选择“新帐户”后:http://i.stack.imgur.com/8DPBB.png
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
Account *account = [[self fetchedResultsController] objectAtIndexPath:indexPath];
self.transactionViewController.navigationItem.title = account.name;
}
我用上面的代码设置了标题,但是标题设置错了viewController... 对于 iPhone 版本,同样的代码根本不会产生任何结果。
编辑: 我实际上在本指南中找到了答案:Passing Data between View Controllers
关键是使用-prepareForSegue:sender:方法获取正确的viewController并设置它的标题。这还允许您在使用 segue 在它们之间切换时将任何数据从一个 ViewController 传递到另一个 ViewController,我现在使用它来设置交易帐户并将帐户名称设置为 seque.destinationViewController.navigationItem.title 属性
感谢大家的帮助
【问题讨论】:
-
您想将标题
Transaction设置为DetailViewController? -
不行,我想给我的TransactionViewController设置和账户名匹配的title,DetailViewController应该保持不变
-
本例中的标题为“新帐户”
-
如果可能的话,我能想到的另一个解决方案是从 TransactionViewController 中访问表格单元格表示的特定 Account 对象。
-
一个视图控制器从它的导航控制器继承它的导航栏,所以通常 self.navigationItem 应该得到那个项目,但万一它没有;尝试访问导航控制器,[self.navigationController.navigationItem.titleLabel setTitle:@""];未设置标题可能有多种原因。
标签: ios objective-c cocoa navigationbar