从笔尖加载时,空UITableView不会弹跳

时间:2012-09-07 10:11:39

标签: ios uitableview

只要bouncesalwaysBounceVertical属性设置为YES,用户滚动时UITableView就会弹跳(即使是空的)。当我初始化UITableViewController时,一切都按预期工作。当我初始化从具有简单视图层次结构的nib加载的UIViewController:具有单个UITableView子级的顶级UIView时,表视图不再反弹。这是我使用的代码:

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate, UITableViewDataSource>
@end

@implementation AppDelegate

@synthesize window = _window;

- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    UIViewController *rootViewController = nil;
    UITableView *tableView;
    BOOL loadFromNib = NO;
    if (loadFromNib)
    {
        rootViewController = [[UIViewController alloc] initWithNibName:@"ViewController" bundle:nil];
        tableView = [rootViewController.view.subviews objectAtIndex:0];
    }
    else
    {
        rootViewController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
        tableView = (UITableView *)rootViewController.view;
    }
    tableView.dataSource = self;
    NSLog(@"%@ bounces: %@", tableView.class, tableView.bounces ? @"YES" : @"NO");
    NSLog(@"%@ alwaysBounceVertical: %@", tableView.class, tableView.alwaysBounceVertical ? @"YES" : @"NO");

    self.window.rootViewController = rootViewController;
    [self.window makeKeyAndVisible];

    return YES;
}

- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 0;
}

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
}

@end

当我将loadFromNib变量设置为YES或NO运行此代码时,它始终记录此信息:

UITableView bounces: YES
UITableView alwaysBounceVertical: YES

但是当我从笔尖加载它时(即loadFromNib设置为YES),当我尝试滚动时,表视图不会反弹。为什么不反弹?

1 个答案:

答案 0 :(得分:6)

我无法准确解释原因,但空表视图的行为似乎非常不稳定。无论如何,手动设置tableView.bounces = YES(例如,在表视图所属的视图控制器的-viewDidLoad方法中)可以解决此类问题,并确保您的表格视图始终反弹,即使是空的。