表格视图无响应

| 我有一个从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位于顶层。 这解决了我的“冻结表视图”问题,但我仍然不太明白为什么:我前后检查了一堆各个组件的框架大小,无法知道发生了什么变化但是,至少是固定的。     

要回复问题请先登录注册