У меня есть BarTableViewController, который происходит от UITableViewController.Это мой основной вид, поэтому он загружается автоматически при запуске приложения, и этот экземпляр класса работает нормально.
Теперь я пытаюсь, чтобы этот оригинальный экземпляр выдвинул другой экземпляр того же класса, как этот:
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становится связанным.
Похоже, это единовременная вещь: после того, как я выполню поиск и отмену, таблица ответит, и даже если я нажму кнопку "Назад", вернусь к тому же самому.снова экземпляр контроллера представления, он не застрянет.
Что я здесь не так делаю?
ОБНОВЛЕНИЕ: У меня был этот парень как RootViewController в моем MainWindow.xib.Я попытался убрать это и заставить делегата приложения создать его, но все же поведение: все работает, кроме табличного представления, не прокручивая.Но теперь первоначальный экземпляр также заморожен.
Итак, всякий раз, когда я явно вызываю initWithNibName, я получаю это замороженное поведение.
UPDATE2: я комментировал различные фрагменты viewDidLoad, и, похоже,работать все время, если я опущу это:
[self.navigationController setToolbarHidden:NO animated:NO];
Конечно, это означает, что я не получаю панель инструментов.Я попытался вставить его обратно без элементов панели инструментов, и он все еще демонстрирует проблему.
ОБНОВЛЕНИЕ3: Взлом GDB, пока он находится в этом состоянии, это то, что я нахожу в UITableView:
(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
}
},
Я попробовал несколько слепых ударов isFirstResponder в gdb, но безуспешно.