UITabBar с UITableView - я вижу таблицу правильно, но не могу выбрать строку - PullRequest
1 голос
/ 08 октября 2009

Это может быть простой ответ для кого-то.

Сначала я создал навигационное приложение, в котором таблица была загружена из SQLite. RootViewController (UITableViewController) загружается из mainWindow.xib. Я добавил функции поиска и области видимости, и просто выдвинул подробный вид (UIViewController) из выбранной строки, и теперь я могу перемещаться назад и вперед к таблице и обратно и фильтровать результаты, выполнять поиск с возможностью поиска по различным областям поиска. Все хорошо, никаких ошибок, сбоев или предупреждений.

Теперь я попытался добавить интерфейс tabBar поверх rootViewController ... через 2 дня я получил TabBarController для отображения (я пытался реализовать его непосредственно на RootviewController, но обнаружил, что мне пришлось реализовать его в основное окно), и я могу выбрать различные виды (XIB) на панели вкладок. У меня есть одна вкладка, которой в IB не назначено представление, и я вижу загрузку RootViewController, как это было раньше, в качестве первого экрана в этом представлении вкладок, даже если RootViewController не назначен на вкладке.

Проблема в том, что я не могу щелкнуть строку в таблице, когда она загружается таким образом. В качестве альтернативы, если я создаю вкладку, вызывающую RootViewController, я получаю панель поиска вверху, но таблица пуста. Я чувствую, что это как-то связано с тем, что appDelegate загружает rootViewController, и я не знаю, как заставить его «загружать» или «перезагружать» вкладку, или что-то в этом роде. Я попытался создать отдельный «search.xib», который был идентичен исходному mainWindow, перед добавлением панели вкладок, затем попытался загрузить его в TabItem, чтобы он сначала вызывал appDelegate, но не cigar: crash. Я проверил, что search.xib работает нормально, так как я поставил его как info.plist "Основное имя файла основного пера", и он прекрасно загружается и работает как и раньше, когда BS добавлял tabBarController ...

Я бы начал вставлять код, но не уверен, что кому-то нужно будет знать, что пропущено или неправильно. Я звоню [self.tableView reloadData] в -(void)viewDidLoad, в RootViewController.m, но это совсем не помогает этой проблеме.

Кто-нибудь может помочь? Mac OS X - версия 10.5.8, и я использую XCode 3.1.4.

// Create and configure the main view controller.
RootViewController *rootViewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
rootViewController.violinMakers = violinMakers;
[violinMakers release];



// Add create and configure the navigation controller.
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
self.navController = navigationController;
[navigationController release];



// Configure and show the window, Override point for customization after app launch 
[window addSubview:[navController view]];
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];

Спасибо за попытку помочь! В последнем разделе выше, по-видимому, я должен получить RootViewController на вершине стека, но не уверен, как.

  // <AppName>AppDelegate.h
@interface <AppName>AppDelegate: NSObject  <UIApplicationDelegate,
UITabBarControllerDelegate, UINavigationControllerDelegate>{
UIWindow *window;
UINavigationController *navController;
UITabBarController *tabBarController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet UINavigationController *navController;
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
@end

Бен - я понимаю, что вы говорите о том, что rootViewController находится за вкладкой BarController. Я просто не знаю, как установить tabBar в качестве основного вида и navController в качестве его вкладки. Я посмотрю учебник, который вы упомянули, и посмотрим, поможет ли это объяснить. Спасибо Бен!

09-10-14 обновление

Некоторый прогресс! Теперь у меня есть вид на вкладке с Навбар вверху. Я знаю, что он исходит из правильного файла .xib, так как теперь можно нажимать на заголовок и поиск, а кнопки области видимости - правильные имена. .... но, как и раньше, если я дошел до этой стадии или даже близко, информация таблицы не загружается в эту вкладку (все ячейки пусты). Как мне заставить мою таблицу загружаться правильно в этой ячейке? Я знаю, что он загружается при запуске, как будто этому окну вообще не назначен вид, я вижу таблицу n Nav, но не могу щелкнуть по ней (так близко, но так далеко). Теперь у меня правильно настроена вкладка, но таблица не загружается должным образом ... rrrr

У меня типичный

[self.tableView reloadData]; 

в viewController.m в методе:

- (void)viewWillAppear:(BOOL)animated

и

- (void)viewDidAppear:(BOOL)animated

и

- (void)viewDidLoad 

и попробовал некоторые другие методы также, но это не перезагружает информацию таблицы, когда я выбираю вкладку.

Есть идеи, как правильно перезагрузить эту таблицу в представлении TabBar?

Я нашел хороший учебник по tabBars, который пошел немного дальше, чем некоторые другие, объясняя с IB. Учебник по внедрению Twillo в виде вкладки

Ответы [ 2 ]

0 голосов
/ 12 ноября 2009

По сути, вот что я нашел для тех из вас, у кого была такая же проблема. Это не просто, или на самом деле Apple предлагает создать панель вкладок позже в программе. Да, это можно сделать, но сейчас я бы предложил другой метод. Я обнаружил, что модальный контроллер вида работает так же хорошо, как tabBar, хотя и меньше, но занимает меньше места, потому что его можно разместить на панели навигации. Если вы планируете приложение с вкладками, начните с приложения на основе вкладок, а затем настройте его, не пытайтесь изменить структуру навигации позже, что является основной проблемой. Во-вторых, я нашел документацию Apple по Interface Builder менее чем удовлетворительной. Все смущены, и его реализация ограничивает фактическую настройку конечного продукта, не делая его проще. Не говоря уже о более запутанном «соединении» всех элементов в нем. Это действительно отстой, и я потратил 2 недели на то, чтобы попробовать разные методы. Это не невозможно, просто невероятно интуитивно понятно, и с моей стороны ошибка изменить весла на полпути вниз по течению. Посмотрите на альтернативы тому, как вы хотите предоставить доступ к информации, и я думаю, что вы найдете лучшие способы, такие как модальное представление, или простые кнопки с действиями IB для доступа к различным представлениям или дополнительной информации. Удачного программирования! Кирк

0 голосов
/ 12 октября 2009

Может показаться, что вы добавляете контроллер панели вкладок в ТОП контроллера таблицы. Непонятно, где вы настраиваете tabBarController, но вы должны добавлять в окно только ОДИН вид (в строках с третьей по последнюю и со второй по последнюю добавляются две).

Основная предпосылка для контроллеров Navigation и TabBar заключается в том, что ваш контроллер панели вкладок является основным, и вы добавите контроллер Navigation в качестве одной из его вкладок. Затем добавьте tabBarController.view в ваше окно. Какая бы вкладка ни была выбрана, будет видимой.

В сети на эту тему размещено руководство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...