如何解决表格视图无响应
|
我有一个从UITableViewController派生的BarTableViewController。
这是我的主视图,因此在应用启动时会
自动加载,并且该类的实例运行良好。
现在,我试图让原始实例像这样推送同
一个类的另
一个实例:
BarTableViewController *bar = [[[BarViewController alloc] initForFoo:theFoo] autorelease];
[self.navigationController pushViewController:bar animated:YES];
initForFoo
方法如下所示:
- (id)initForFoo:(Foo *)theFoo
{
if ((self = [self initWithNibName:@\"BarTableViewController\" bundle:nil])) {
self.foo = theFoo;
}
return self;
}
推的工作和视图加载,并在模拟器中正常工作。
但是,在我的iPhone 4上,表格视图在第二种情况下没有响应:在屏幕上上下滑动手指没有任何作用。如果我点击
搜索栏中的,然后点击取消,表格就会响应。
如果我只是
调用initWithNibName而不是init,那么表视图即使是第一次也能正确响应,但是当然我的IBOutlet东西都不会受到约束。
这似乎是一次性的事情:完成
搜索和取消后,表将响应,即使我按下了“后退”按钮,然后再次回到该视图控制器的同一实例,不会卡住。
我
在这里做错了什么?
更新:
我在MainWindow.xib中确实有这个人作为RootViewController。我试过服用
并让应用程序委托创建他,但仍然是相同的行为:一切
除表格视图不滚动外,其他
功能均有效。但是现在初始实例也被冻结了。
因此,每当我显式
调用initWithNibName时,我都会得到这种冻结的行为。
UPDATE2:
我一直在注释掉不同的viewDidLoad块,如果我忽略了这一点,它似乎一直在起作用:
[self.navigationController setToolbarHidden:NO animated:NO];
当然,这意味着我没有工具栏。我尝试将其放回没有工具栏的项目,但仍然存在问题。
UPDATE3:
在这种状态下使用GDB,这就是我在UITableView中找到的
内容:
(gdb)p * [[[[UIApplication sharedApplication]委托] searchViewController]
= {
= {
= {
= {
isa = 0x9fe44
},<无数据字段>},
UIViewController的成员:
_view = 0xa27600,
_tabBarItem = 0x0,
_navigationItem = 0x4d6dcc0,
_toolbaritems = 0x0,
_title = 0x0,
_nibName = 0xb9120,
_nibBundle = 0x242b40,
_parentViewController = 0x4d6de90,
_childViewControllers = 0x0,
_childModalViewController = 0x0,
_parentModalViewController = 0x0,
_modalTransitionView = 0x0,
_modalPreservedFirstResponder = 0x0,
_defaultFirstResponder = 0x0,
_dimmingView = 0x0,
_dropShadowView = 0x0,
_presentationSuperview = 0x0,
_sheetView = 0x0,
_currentAction = 0x0,
_savedHeaderSuperview = 0x0,
_savedFooterSuperview = 0x0,
_editButtonItem = 0x0,
_searchdisplayController = 0x4d7b290,
_popoverController = 0x0,
_modalTransitionStyle = UIModalTransitionStyleCoverVertical,
_modalPresentationStyle = UIModalPresentationFullScreen,
_lastKNownInterfaceOrientation = UIInterfaceOrientationPortrait,
_contentSizeforViewInPopover = {
宽度= 320,
高度= 1100
},
_formSheetSize = {
宽度= 0,
高度= 0
},
_viewControllerFlags = {
appearState = 2,
isEditing = 0,
isPerformingModalTransition = 0,
hidesBottomBarWhenPushed = 0,
autoresizesArchivedViewToFullSize = 0,
viewLoadedFromControllerNib = 0,
isRootViewController = 0,
isSheet = 0,
isSuspended = 0,
wasApplicationFrameAtSuspend = 0,
wantFullScreenLayout = 0,
shouldUseFullScreenLayout = 0,
allowAutorotation = 1,
searchControllerRetained = 1,
oldModalinPopover = 0,
isModalinPopover = 0,
restoreDeepestFirstResponder = 0,
isInWillRotateCallback = 0,
disallowMixedOrientationPresentations = 0,
modalPresentationsAreCurrentContext = 0
}
},
UITableViewController的成员:
_tableViewStyle = UITableViewStylePlain,
_keyboardSupport = 0x4d87540,
_tableViewControllerFlags = {
cleaRSSelectionOnViewWillAppear = -1
}
},
我在gdb中尝试了一些盲目的isFirstResponder刺伤,没有运气。
解决方法
我读:
如果您在同一NIB中创建视图控制器及其视图,并将视图嵌套在视图控制器下方,它将自动调整视图的框架。
在回答这个问题的过程中,这启发了我尝试编辑XIB并添加ViewController并将TableView置于其下—以前,我必须在XIB中使用ViewController,而TableView位于顶层。
这解决了我的“冻结表视图”问题,但我仍然不太明白为什么:我前后检查了一堆各个组件的框架大小,无法知道发生了什么变化但是,至少是固定的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。