我正在为iPad开发,并使用Xcode中提供的模板创建了一个标准的UISplitViewController应用程序 - 左侧是标准UITableView,右侧是详细视图。
我修改了模板,以便当用户从左侧视图中选择一个表格单元格时,它会在其位置(仍然在左侧)推送一个新的表格视图。这没有问题,但我希望能够从新的表格视图更新现有的详细信息视图 - 有点像Apple的Mail应用程序的工作方式。
- 我不想在详细视图(右侧)上创建多个视图 - 我已经阅读了文档并看到了Apple提供的示例代码。
我阅读/遵循了很多教程,但似乎无法让这个相对简单的视图层次结构起作用。
更多细节: -
在RootView中使用detailViewController.detailItem = @"Test";
didSelectTableRowAtIndexPath委托方法更新详细信息视图标签。在新推送的表视图中使用完全相同的代码不会更新标签 - 我是否缺少参考点或其他内容?
自发布以来,我一直试图使用协议&委托更新详细视图上的标签。使用新方法从根视图更改时,标签会正确更新,但是,当我将新视图推到根视图(左侧)时,我无法再更新标签。
答案 0 :(得分:1)
尝试使用UISplitViewController的viewControllers属性
@property(非原子,复制)NSArray
* viewControllers Discussion此属性中的数组必须完全包含 两个视图控制器。风景 提供控制器 在拆分视图中从左到右 在景观中的界面 取向。因此,视图控制器 在索引0处显示在左侧 side和视图控制器在索引处 1显示在右侧 界面。
第一个视图控制器 数组通常是隐藏的 设备处于纵向方向。 将委托对象分配给 接收器,如果你想协调 使用此视图控制器的显示 一个popover。
答案 1 :(得分:1)
在创建RootViewController之后的某个时刻(或者甚至在自定义的init方法中)你正在设置DetailViewController的委托,这是一个常见的错误,当一个新的rootViewController被推到NavController上时你忘了设置delgate再次。
您可能正在创建一个新的控制器:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
方法并在将新控制器推送到navController之前记录/递增新控制器的级别。创建此新控制器后,再次设置委托。
newRootController.myDelegate = self.myDelegate;
在您执行此操作之前如果您在使用它之前NSLog代理,您可能会发现它没有。
答案 2 :(得分:0)
请注意detailViewController!您必须将此实例变量传递给新的根视图。所以像这样:
newRootViewController.detailViewController = self.detailViewController
否则,您的新根视图将永远不会知道detailView。对于新的根(表)视图,您必须执行以下操作:
#import <UIKit/UIKit.h>
@class DetailViewController;
@interface VorhersageTable : UIViewController {
UITableView *vorhersageTableView;
DetailViewController *detailViewController;
}
@property (nonatomic, retain) IBOutlet UITableView *vorhersageTableView;
@property (nonatomic, retain) DetailViewController *detailViewController;
@end
在新类中声明detailViewController的属性。
答案 3 :(得分:0)
在推送第二个表(例如SubRoot)之前在RootViewController.didselectRow中添加它
SubRoot *subController = [[SubRoot alloc] initWithNibName:@"SubRoot" bundle:nil];
subController.detailViewController = self.detailViewController;
创建类似于RootViewController的SubRoot.h和SubRoot.m。
@class DetailViewController;
@interface SubRoot : UITableViewController {
DetailViewController *detailViewController;
}
@property (nonatomic, retain) DetailViewController *detailViewController;
@end
然后合成detailViewController。
希望它有所帮助。