- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望我能正确描述这种情况。当它发生时很容易在屏幕上看到,但很难用语言解释,但我会尽力而为。
我有一个带有固定主视图 (UITableView) 和两个详细 View 之一的 UISplitViewController,具体取决于在主视图中触摸的单元格类型。每个详细信息 View 也是一个 UITableView。我使用 Todd Bates 将 Apple 的 MultipleDetailViews 示例转换为使用 Storyboard作为我的代码的基础 (Adventures in UISplitViewController)。
我正在使用 Storyboard,所以这就是解释部分变得棘手的地方。 Master 和第一个显示的 Detail view Navigation Controllers 在 Storyboard 中作为与 UISplitViewController 的关系连接起来。第二个 Detail Navigation Controller 只是坐在 Storyboard中,没有任何连接。
问题来了。细节 #1 在横向模式下处于事件状态,细节 #2 通过点击主视图中的一行设置为事件状态。 iPad 旋转到纵向模式,这会导致细节 #2 为纵向模式正确调整大小。通过轻敲母版中的一行将细节 #1 设置为事件状态。细节 #1 与上次在横向模式下显示时的大小相同,它没有按应有的方式填满屏幕。
我的问题是,我可以告诉当前未显示的 Detail Controller 在方向改变时自行调整大小吗?或者更好的问题是如何调整刚刚显示的详细 View 的大小以填充 UISplitView 的详细信息部分?
我希望我描述的足够详细,以便有人提供帮助。
UISplitViewControllerDelegate 方法在管理器类中实现,该类应该将这些调用转发给详细 View Controller 。下面是该方法的实现:
#pragma mark - UISplitViewControllerDelegate
/* forward the message to the current detail view
* all detail views must implement UISplitViewControllerDelegate
*/
-(void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)pc
{
self.masterBarButtonItem = barButtonItem;
self.masterPopoverController = pc;
barButtonItem.title = NSLocalizedString(@"Games", @"Games");
[self.currentDetailController.navigationItem setLeftBarButtonItem:self.masterBarButtonItem animated:YES];
}
/* forward the message to the current detail view
* all detail views must implement UISplitViewControllerDelegate
*/
-(void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
self.masterBarButtonItem = nil;
self.masterPopoverController = nil;
[self.currentDetailController.navigationItem setLeftBarButtonItem:nil animated:YES];
}
并且我在每个细节 View Controller 中实现了以下内容:
#pragma mark - Split view
- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
{
barButtonItem.title = NSLocalizedString(@"Games", @"Games");
[self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
self.masterPopoverController = popoverController;
}
- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
// Called when the view is shown again in the split view, invalidating the button and popover controller.
[self.navigationItem setLeftBarButtonItem:nil animated:YES];
self.masterPopoverController = nil;
}
问题是两个 Detail view controller 都没有接收到这些消息。我看不出它们是如何被触发的...
我看不出转发 didRotateFromInterfaceOrientation: 会如何导致未显示的 Detail Controller 调整自身大小。来自 Apple 的文档:
When the orientation of an iOS–based device changes, the system sends out a UIDeviceOrientationDidChangeNotification notification to let any interested parties know that the change occurred. By default, the UIKit framework intercepts this notification and uses it to update your interface orientation automatically. This means that, with only a few exceptions, you should not need to handle this notification at all. Instead, all you need to do is implement the appropriate methods in your view controller classes to respond to orientation changes.
The window object does much of the work associated with changing the current orientation. However, it works in conjunction with the root view controller to determine whether an orientation change should occur at all and, if so, what additional methods should be called to respond to the change. If this controller is a container, it may rely on a child to decide whether the orientation should occur.
When a rotation occurs, methods of the view controller are called at various stages of the rotation to give the view controller a chance to perform additional tasks. You might use these methods to hide or show views, reposition or resize views, or notify other parts of your app about the orientation change. Because your custom methods are called during the rotation operation, you should avoid performing any time-consuming operations there. You should also avoid replacing your entire view hierarchy with a new set of views. There are better ways to provide unique views for different orientations, such as presenting a new view controller (as described in “Creating an Alternate Landscape Interface”).
最佳答案
与 splitViewController 方法类似,您应该转发以下调用:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
[super didRotateFromInterfaceOrientation:fromInterfaceOrientation];
// Forward to detail view controller here:
}
到不可见的详细 View Controller (即不是 self.currentDetailController,而是另一个)。
关于uitableview - UISplitViewController 详细 View 不在旋转时调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9661904/
我知道 UISplitViewController 只能用作根 Controller 。但是否可以从一个分割 View 转到另一个分割 View ? 喜欢加载具有不同数据和布局的详细 View 和主视
然后将其合并到垂直 View 中?这是来自 IMDB 应用程序的示例。 http://img39.imageshack.us/img39/5636/imdb2.jpg http://img39.ima
iOS 5.1 中与 UISplitViewController 相关的新行为应用程序似乎正在拦截 UISlider产生不良结果的运动。这可能也适用于 UISegmented控件和任何其他处理从左到右
我有一个 UISplitViewController,并尝试从 MasterViewController 获取事件并完全更改 DetailViewController。据我了解,这基本上可以通过执行以
每当用户在iPad的UIsplitView中从横向 View 切换到纵向 View 时,我都希望使弹出窗口 View 可见。虽然用户可以通过单击条形按钮使其可见,但我希望此操作对于纵向模式是自动的。
我最近遇到了一个问题。我的iPad应用程序某种程度上阻止了iPad自动旋转。我的应用程序加载了一个UISplitView,这两个 View Controller 都为shouldAutorotateT
我正在开发一个 iPadOS 应用程序,我在其中使用了 UISplitViewController。到目前为止,我一直在使用旧的 API 并手动处理所有内容(包括 displayModeButtonI
我正在尝试将 splitview Controller 添加为 subview Controller 。父 View Controller 是导航 Controller 。父 View Control
我在我的应用程序中使用 MGSplitViewController 库。直到 iOS7 都可以正常工作,但是对于 iOS8 来说,它不能按预期工作,原因是iOS8中 UIPopoverControll
我有一个根 UISplitViewController,其中包含与 DetailViewController 相关的 UINavigationController。 DetailViewControl
我在让 UISplitViewController 在通用应用程序中工作时遇到问题,我已经对 iPhone 部分进行了编码。作为一种故障排除方法,我决定从一个新项目开始,并尝试执行导致问题的一个操作,
我想在纵向模式下创建一个 UISplitViewController,就像在“设置”应用程序中一样。我该怎么做? 最佳答案 有点晚了,还看一下MGSplitViewController作者:马特·格梅
如何在横向模式下隐藏splitviewcontroller的detailView中的导航Bar? 在详细 View 中,我尝试过这样 self.navigationController.navigat
在我的 iPad 应用程序中,我使用带有两个 UINavigationControllers 作为主控和细节的 UISplitViewController。在 Potrait 中,我希望通过 UIPo
在我的 iPad 应用程序中。我正在处理 UISplitViewController .在 DetailViewController的 UISplitViewController有按钮。当按下该按钮时
我想知道是否可以使用带有按钮的普通 ViewController,当您单击按钮时,它会显示一个新的 Controller ,该 Controller 分为两个带有 uisplitviewcontrol
我设置了一个非常简单的 iOS splitView Controller 项目,它有一个非常奇怪的错误。如果您以横向模式启动应用程序,请单击一个按钮以打开另一个 View ,旋转到纵向,然后返回到起始
抱歉,如果之前已经发布过此内容,我浏览了 Apple Docs 等,但找不到有关 UISplitViewController 工作原理的良好解释。 我问这个问题是因为我为 UINavigationBa
我有一个带有 SplitView 的应用程序,可让您将公司添加到数据库中。在 masterView 中,公司显示其各自的公司名称。点击其中一家公司会向我显示“viewCell”中的地址(实际上不是单元
我们正在使用 UISplitViewController。当不处于“分割模式”时显示详细 View Controller 时,屏幕顶部会出现一个灰色条。有谁知道为什么会发生这种情况。在分割 View
我是一名优秀的程序员,十分优秀!