我是一个工作的UINavigationController在堆栈上和堆栈外推送两个不同的UITableView。除滚动外,我的所有功能都正常工作。当任一表格在顶行上方滚动或在底行下方滚动时,它会保持在那里暴露表格上方/下方的边距。我正在寻找桌子“弹回”,以便只有桌子可见而不是超出白色空间区域 - 就像任何其他iPhone应用程序一样。
我的一个UITableViews由NIB加载,另一个以编程方式创建 - 两者都具有完全相同的结果。我已尝试过Nib中的所有弹跳和滚动设置,但似乎没有任何效果。
有人能告诉我我做错了什么吗?如果我能详细说明我的问题,请告诉我。
谢谢,
-Scott
我想添加更多信息,因为我仍然无法弄清楚这个问题。我应该指出,我试图添加此NavigationController的应用程序不是主视图。我有一个使用Nib加载的SettingsViewController。在该控制器中,我想要创建一个新的基于导航的视图集。所以从我的SettingsViewController里面,如果用户点击一个按钮,我......
在我的按钮选择器中:
TextListViewController *controller = [[TextListViewController alloc] initWithStyle:UITableViewStylePlain];
controller.title = @"Test Table View";
navController = [[UINavigationController alloc] initWithRootViewController:controller];
navController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:navController animated:YES];
[controller release];
上面的代码在滚动之外的各个方面都非常有效。我能够处理所有委托方法并将新控制器推送到堆栈。我遇到的唯一问题是根控制器(以及推送的所有其他控制器)将无法正确滚动。
在每种情况下,它都允许我滚过桌子的顶部和底部,并且不会像它应该的那样快速回弹。当你轻弹滚动时,它也没有自由轮的感觉。相反,无论您滚动多快,它都会在您移开手指后立即停止。很奇怪。
我尝试使用导航模板创建另一个项目 - 当然它工作正常 - 但模板假设NavigationController的视图始终附加 - 这不是我的情况。我正在标准的ViewController中动态创建所有这些。
感谢Kevin的帮助,但我仍然在这里寻求帮助。
谢谢,
答案 0 :(得分:2)
好吧,我解决了这个问题,它与我如何将UITableView添加到UINavigationController或我是如何实例化视图无关。事实证明这与任何一个完全无关。
我正在使用紧密的while循环来处理我的游戏循环。我需要一种方法来处理循环中的OS消息,以防止触摸和其他事件被阻止。这是我在循环中间使用的内容:
while(CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.002, TRUE) == kCFRunLoopRunHandledSource);
直到这个滚动问题,我对这个实现没有任何问题。无论出于何种原因,这都打破了UITableView的滚动功能。
我改变了游戏循环,因此不需要上面的代码,一切都开始工作了。
...谢谢
答案 1 :(得分:0)
您的UITableView
是UIScrollView
,其属性bounces
是关键。这是reference。不过,默认情况下它是YES
。你看过这个吗?
答案 2 :(得分:0)
您的问题和评论似乎表明,除了推送UITableView
之外,您正以某种方式将UINavigationController
附加到UITableViewController
。如果你不这样做,你真的应该。
通常,如果您可以将子视图控制器推送到UINavigationController
,那么您也可以单独使用子视图控制器来测试它。尝试将UITableViewController
的视图设置为窗口的根视图,看看它是否符合您的预期。这样,您可以将问题隔离到表格视图部分或导航部分。
答案 3 :(得分:0)
我遇到了与您相同的问题,如上所述与您调用runloop的方式有关:
while(CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.002, TRUE) == kCFRunLoopRunHandledSource);
看起来像DefaultMode是错误的等待,我改变了我的代码等待UITrackingRunLoopMode并且TableView正常工作。就我而言,我用过:
[[NSRunLoop currentRunLoop] runMode:UITrackingRunLoopMode beforeDate:[NSDate distantFuture]];
一切正常。