私はUITableViewControllerから派生したBarTableViewControllerを持っています。 これは私のメインビューですので、アプリケーションの起動時に自動的にロードされ、そのクラスのインスタンスは正常に動作します。テーブルビューは応答しません
は今、私は元のインスタンスは、このような同じクラスの別のインスタンスをプッシュすることを持ってしようとしています:
- (id)initForFoo:(Foo *)theFoo
{
if ((self = [self initWithNibName:@"BarTableViewController" bundle:nil])) {
self.foo = theFoo;
}
return self;
}
プッシュ作品やビュー:
BarTableViewController *bar = [[[BarViewController alloc] initForFoo:theFoo] autorelease];
[self.navigationController pushViewController:bar animated:YES];
initForFoo方法は次のようになりますロードし、シミュレータで正常に動作します。
私のiPhone 4では、テーブルビューはこの2番目のインスタンスで反応しません。画面を上下にスライドさせると何も起こりません。検索バーをタップして[キャンセル]をタップすると、テーブルが応答します。
initWithNibNameの場合は、initを呼び出すだけでは、テーブルビューも最初から正しく応答しますが、私のIBOutletのものはバインドされません。
これは一度しかないようです。検索とキャンセルを実行すると、テーブルが応答し、戻るボタンを押しても同じビューコントローラーのインスタンスに戻ります再び、それは立ち往生しません。
私はここで間違っていますか?
更新: 私はMainWindow.xibのRootViewControllerとしてこの男を持っていました。私はその を取り出して、アプリケーションの代理人が彼を作成することを試みたが、同じ動作:すべて は、スクロールしないテーブルビュー以外は機能する。しかし、今や最初のインスタンスも凍結されています。
私は明示的にinitWithNibNameを呼び出すたびに、このフリーズした動作を取得します。
アップデート2: 私はのviewDidLoadの異なるチャンクをコメントアウトしてきたと私はこれを省略した場合、すべての時間を動作するようです:もちろん
[self.navigationController setToolbarHidden:NO animated:NO];
私は何のツールバーを取得しないことを意味しています。私はツールバー項目なしでそれを入れようとしましたが、それでも問題を示しています。
Update3と:
(gdb) p * [[[UIApplication sharedApplication] delegate] searchViewController] <UITableViewController> = { <UIViewController> = { <UIResponder> = { <NSObject> = { isa = 0x9fe44 }, <No data fields>}, members of 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 = { width = 320, height = 1100 }, _formSheetSize = { width = 0, height = 0 }, _viewControllerFlags = { appearState = 2, isEditing = 0, isPerformingModalTransition = 0, hidesBottomBarWhenPushed = 0, autoresizesArchivedViewToFullSize = 0, viewLoadedFromControllerNib = 0, isRootViewController = 0, isSheet = 0, isSuspended = 0, wasApplicationFrameAtSuspend = 0, wantsFullScreenLayout = 0, shouldUseFullScreenLayout = 0, allowsAutorotation = 1, searchControllerRetained = 1, oldModalInPopover = 0, isModalInPopover = 0, restoreDeepestFirstResponder = 0, isInWillRotateCallback = 0, disallowMixedOrientationPresentations = 0, modalPresentationsAreCurrentContext = 0 } }, members of UITableViewController: _tableViewStyle = UITableViewStylePlain, _keyboardSupport = 0x4d87540, _tableViewControllerFlags = { clearsSelectionOnViewWillAppear = -1 } },
私は運とGDBで刺すisFirstResponderいくつかのブラインドを試してみた:それは、この状態でですが は、GDBで破り、これは私がのUITableViewで見つけるものです。
「最初のレスポンダー」の問題があるかもしれませんが、一部のマイナーな要素が最初のレスポンダーであることをあきらめていないので、スクロールビューが応答しません。 –
これは最初のレスポンダを明示的に設定しているわけではありません:nav barなどの標準のUITableViewControllerですが、私は何かばかげていると確信しています。シミュレータでは、最初のレスポンダとタイミングが関連する傾向があります。 – finsprings