iPad:弹出视图中的表格不滚动以显示选定的行

Posted

技术标签:

【中文标题】iPad:弹出视图中的表格不滚动以显示选定的行【英文标题】:iPad: Tables in Popover Views do not Scroll to Show Selected Row 【发布时间】:2010-04-14 21:40:55 【问题描述】:

iPad 上的横向视图控制器有两个问题。

(1) 我有两个包含表格的弹出窗口。表格应滚动到特定行以反映主视图中的选择。相反,表格确实向下滚动了一些,但实际选择的行仍然不在屏幕上。

(2) 我所有的 action sheet 的宽度都是 320。

在 Interface Builder 中,我的所有视图都是横向创建的。只有主窗口不是,但我看不到改变它的方法。

我的配置:启动后,我的主窗口和主视图控制器视图得到以下坐标:

Window frame 0, 0, 768, 1024 mainView frame 0, 0, 748, 1024

之后的所有其他视图在被召唤时(加载时但在呈现之前)显示这些坐标:

    frame of keysig 0, 0, 1024, 768
    frame of instrumentSelect 20, 0, 1024, 768
    frame of settings 0, 0, 467, 300

在我所有的视图控制器中,我回复shouldAutorotateToInterfaceOrientation

            return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || 
                        (interfaceOrientation == UIInterfaceOrientationLandscapeRight));

一切(几乎)都按预期运行。该应用程序启动到两种横向模式之一。视图(和视图控制器)显示它所属的所有内容,并且点击按预期在整个屏幕上工作。但是,我仍然有这两个问题。

问题 1: 我有两个弹出窗口,其中包含足够长的表格,可以跑出屏幕。表格应滚动到选定的行。他们确实滚动,即他们没有从第 1 行开始,但他们没有滚动到足以实际显示所选行的程度。

alt text http://idisk.mac.com/mahboud//Public/keysig.png

alt text http://idisk.mac.com/mahboud//Public/instrumentlist.png

似乎 UITable 内部矩形创建时使用了错误的数字并保持不变,但我检查了 UITableView 的两个滚动视图内容坐标,它们似乎是合理的。

问题 2: 我认为这与问题 1 有关,因为我的操作表的宽度为 320。我只能假设 iPad 只允许操作表宽度为 320 或 480,因为它不知何故认为屏幕是纵向模式,它使用更窄的宽度。

你有它。我不敢相信我仍然对方向问题感到困惑。我发誓苹果不会让一个横向应用程序变得容易。有什么想法吗?

【问题讨论】:

这是个好问题。你显然花了一些时间。然而,你把真正的问题埋在了身体里。人们必须阅读数百个单词才能很好地了解您的问题是什么。将来,把问题放在首位,然后是任何细节。如果他们不必费力地找出您要问的问题,就会有更多的人阅读并回答您的问题。我已将问题编辑为更易于阅读的格式。 感谢您花时间澄清。 【参考方案1】:

我有点想通了。如果我采取了

[self.tableView scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionNone animated:YES];

从 -viewDidAppear 或 -viewWillAppear 中取而代之,而是将其放在我的 -presentPopoverFrom... 之后,然后就可以了:

[popController presentPopoverFromBarButtonItem:keySigBBItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

[keySignatureTableVC.tableView scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionMiddle animated:NO];

必须发生的事情是 -viewDidAppear 和 -viewWillAppear 都必须在 presentPopover... 调整大小或重新定向视图之前被调用。我在这两种方法中所做的不是在正确的框架或边界上工作。滚动后似乎有效。

【讨论】:

以上是关于iPad:弹出视图中的表格不滚动以显示选定的行的主要内容,如果未能解决你的问题,请参考以下文章

弹出窗口中的表格视图不滚动

单击表格视图时如何显示选定的行?

iPad使用触摸显示弹出框?

表视图侧视图控制器中的当前选定行

将选定的行保持在表格视图控件的中间

如何在 iPad 中处理不同的滚动视图以改变方向?