我对iPad开发还很陌生,所以请原谅我看似有点显而易见的问题。
我有一个现有的iPhone应用程序,我正在转换为iPad版的通用应用程序。
用户界面很简单。
Split View Controller
其中Master
代表静态UITableView
(人物,时间轴,事件,日期)供用户选择。 Detail
当然会显示UITableView Master
中选择的任何一个单元格。 Detail
和Master
都已在Storyboard中创建,并且都是NavigationControllers。
我正在尝试执行以下常见方面:横向模式同时显示Master
和Detail
视图,而纵向仅显示Detail
视图,但显示{{1}在请求时弹出UIBarButtonItem
。
问题
当我从Master
转到Landscape
时,Portrait
可见,我可以按此按钮以纵向模式显示UIBarButtonItem
视图。
在纵向模式下,如果我拿出按钮并从Master
视图中选择其他单元格,则当我通过点击Master
视图中的任意位置关闭Master
时,它现在不显示Detail
。
我正在关注http://www.dharmaworks.net/Consulting/switching-detail-views-in-uisplitviewcontroller-with-ios7/作为尝试让这个工作的方法。
代码
MasterTableView:
UIBarButton
SplitViewPresenter协议
#pragma mark - Split View Delegate
- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
{
UINavigationController *navController = [[[self splitViewController ] viewControllers ] lastObject ];
id vc = [[navController viewControllers] firstObject];
[vc setSplitViewButton:barButtonItem forPopoverController:popoverController];
}
- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
UINavigationController *navController = [[[self splitViewController ] viewControllers ] lastObject ];
id vc = [[navController viewControllers] firstObject];
[vc setSplitViewButton:nil forPopoverController:nil];
}
详细信息视图
@property (nonatomic, strong) UIBarButtonItem *splitViewBarButtonItem;
-(void)setSplitViewButton:(UIBarButtonItem *)splitViewButton forPopoverController:(UIPopoverController *)popoverController;
详细视图的.h文件声明为使用SplitViewPresenter。
更新
我理解为什么会这样。当我从横向模式旋转到纵向模式时,只会调用setter。我的问题是,如何在没有轮换的情况下使其工作?另外,在我上面的链接中,我没有实现任何didSelectRow代码。我应该这样做吗?
对此的任何指导都将非常感激。