2013-06-07 2 views
0

Я пытаюсь выполнить следующие действия:IOS: вкладка Контроллер вид бар с помощью раскадровки

То, что я хотел бы сделать, это:

1.) Когда пользователь нажимает на кнопку в UIViewController, он будет получить список элементов.
2.) Элементы будут отображаться в UITableView.
3.) Наконец количество элементов будет отображаться на третьей точке зрения (не инициированной UITableView)

Все вышеизложенное я управляю, за исключением того, что я хотел бы, чтобы обернуть все эти контроллеры в настраиваемой контроллер панели вкладок , Но данные не передаются из UIViewController в UITableView или в другой вид. Я использую Storyboard, я подключил контроллер панели вкладок и другие 3 контроллера там, как контроллеры представлений. Я попытался создать экземпляр UITableView и контроллеров UIView с использованием метода UIStoryboard и создать экземпляры этих контроллеров и отправить данные им, контроллеры отображаются в контроллере панели вкладок, но данных нет. Между прочим, я не использую Segue. Я что-то упустил?

Спасибо.

КОД:

UITabBarController tabBarController = (UITabBarController) self.window.rootViewController;

UIStoryboard *storyboard1 = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]]; 
    mainViewController *mainController = (mainViewController*)[storyboard1 instantiateViewControllerWithIdentifier:@"mainController"]; 

    UIStoryboard *storyboard2 = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]]; 
    tableViewController *tableview = (tableViewController*)[storyboard2 instantiateViewControllerWithIdentifier:@"tableviewController"]; 

    UIStoryboard *storyboard4 = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]]; 
    resultController *mapView = (resultController*)[storyboard4 instantiateViewControllerWithIdentifier:@"resultView"];</code> 

I have tried also creating the UI Table View and the result view controller in MainViewController and pass data to them (before they are even displayed), but no data is ever present when these controllers are displayed. I made sure I alloc and init these controllers properly and NSLog shows that the instance methods in these controllers are called, but still no data is shown, even though the controllers are displayed in tab bar view controller, when they are displayed.

UPDATE 2:

Now I am trying to do the following:

self.tableviewController = [self.tabBarController.viewControllers objectAtIndex:1];
self.resultViewController = [self.tabBarController.viewControllers objectAtIndex:2];

И когда я называю это:
NSLog(@"%@", [self.tabBarController class]);
NSLog(@"%@", [self.tableViewController class]);
NSLog (@ "% @", [self.resultViewController класс]);

Все они являются пустыми.

В принципе, у меня есть 3 контроллера просмотра, подключенных как «контроллеры представлений», используя раскадровку для UITabbarController. Главный контроллер представления (с индексом 0 в UITabbarController), из которого я вызываю выше, просто имеет один UIButton. После нажатия он выберет список строк и отправит их в представление таблицы (по индексу 1 в UITabbarController) и на последнем контролере просмотра (по индексу 2 в UITabbarController) он отобразит только количество строк в результате, которое оно получает от Main View Controller, а не из Table View.

В моей настройке я не использую UINavigationController.

Я хотел бы иметь возможность отключить представление таблиц и контроллер представления результатов, прежде чем они будут отображаться даже нажатием на вкладке элемента панели на UITabbarController. Отключение я имею в виду, что данные будут отправлены в Table View и Result View, даже если они еще не отображаются.

+0

Показать код. Вы использовали параметр «Вставить в панель управления таблицами» в Interface Builder или вы сделали это сами? – iwasrobbed

ответ

0
  1. Код, который вы представляете, не является необходимым и неправильным для того, чего вы хотите достичь. (Обычно у вас должен быть один экземпляр UIStoryboard.) Прочитайте docs.
  2. Вы ничего не пишете о том, как вы пытаетесь достичь связи между контроллерами представлений. Существует несколько методов. Но используйте делегирование. Прочтите docs.
  3. Если вы ответите на комментарий, вы должны использовать символ @, за которым следует имя пользователя SO, чтобы он был уведомлен о ваших обновлениях.
Смежные вопросы