为什么我不能在IB中设置-[UITableView alwaysBounceVertical]?

4
我有一个UITableView,当表格中没有足够的单元格进行滚动时,我不希望它弹跳。因此,我将-bounces设置为YES,将-alwaysBounceVertical设置为NO。
我尝试在IB中使用“Bounces”和“Bounce Vertically”复选框来设置这些属性,但似乎无论我将“Bounce Vertically”属性设置为什么,它在运行时始终为YES。
我更愿意能够完全使用IB配置它,并且不需要使用代码设置属性。有人知道这是为什么吗?

我认为你需要使用代码。你可以尝试 tableView.bounces = NO; - Warif Akhand Rishi
@WarifAkhandRishi- 只需将-bounces设置为NO,即可在所有情况下关闭弹跳。我只想在必要时弹跳。-bounces=YES和-alwaysBounceVertical=NO正好符合我的要求,但虽然使用IB似乎可以实现这一点,但以此配置的表视图似乎会忽略“垂直弹跳”复选框设置,总是将-alwaysBounceVertical设置为YES。 - GBegen
3个回答

6
在Interface Builder中勾选“垂直弹跳”似乎有问题。但是我发现你可以在IB中将alwaysBounceVertical设置为“用户定义的运行时属性”,它确实可以正常工作。(Xcode 5.0.1 iOS7 SDK)

2
@KeithSmiley,非常感谢您提交关于此事的radar://22959792!自从iOS 7以来,UITableView在初始化时总是将值设为YES,即使它是从nib/storyboard解档。我已经提交了一个简单的修复程序供审核。如果早些时候有人报告这个问题,也许它早就被修复了。 :-) - Quinn Taylor

1

在界面构建器中无法实现您想要的功能。相反,您必须实现这个简单的代码来完成所需的任务。

您需要将“Bounces”属性设置为NO而不是YES,并在界面构建器中将“Bounce Vertically”设置为YES。要在有更多单元格时启用弹跳效果,可以使用以下代码:

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        NSInteger iRows = [arraytableData count];

        if(tableView.visibleCells.count < iRows)
        {
            tableView.bounces = YES;
        }
        else
        {
            tableView.bounces = NO;
        }
        return iRows;
    }

3
这段代码是不必要的;在 -viewDidLoad 方法中设置 -bounces 为 YES 和 -alwaysBounceVertical 为 NO 一次就足以实现我的目标。我试图通过 IB 中的配置避免这个小代码量,但发现 IB 中的“垂直弹跳”复选框在运行时对表视图没有影响。 - GBegen

0

我在页面加载时遇到了同样的问题,UITableView总是垂直弹跳。经过长时间的搜索,我找到了解决办法。 我正在使用Xib中的图像制作自定义导航栏,并将UITableView放置在UIImageView之前的UIView占位符中。 然后,我改变了UIView占位符中UITableView的位置,并且下面的代码对我有效:self.tableView.alwaysBounceVertical = NO;
如果有人遇到这种类型的问题,请仔细检查UITableView在占位符中的位置。谢谢


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接