UISegmentedControl с двумя контроллерами - PullRequest
2 голосов
/ 28 июля 2011

Здравствуйте, я делаю UISegmentedControl с двумя сегментами.При нажатии на любую из вкладок сегментов должен появиться контроллер, в котором есть табличное представление.Я могу выполнить все до этого момента, но когда я выбираю ячейку в моей таблице, я предполагаю выдвинуть новый контроллер представления, я вижу, что вызывается

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

, и он запускает всекод, но я не вижу новое представление.

В основном проблема заключается в частном представлении, и общедоступное представление не может получить доступ ни к одному из свойств навигации.

Здесьснимок экрана того, что я хочу сделать

Screen Shot

Вот коды

AppDelegate

UINavigationController *localNavigationController;
ManageSegmentedViewControl *manageSegmentedViewControl = [[ManageSegmentedViewControl alloc]init]];
localNavigationController = [[UINavigationController alloc] initWithRootViewController:pickUpDootController];
localNavigationController.navigationBar.barStyle = UIBarStyleBlack; 

ManageSegmentedViewControl

 - (void)viewDidLoad
{
    [super viewDidLoad];

    PrivateViewController * controller1 = [[PrivateViewController alloc] init];
    PublicViewController * controller2 = [[PublicViewController alloc] init];


    self.segmentedViewControllers = [NSArray arrayWithObjects:controller1, controller2, nil];
   [controller1 release];
   [controller2 release];


   self.segmentedControl =
    [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Private",  @"Public", nil]];
   self.segmentedControl.selectedSegmentIndex = 0;
   self.segmentedControl.segmentedControlStyle = UISegmentedControlStylePlain;
   self.segmentedControl.frame = CGRectMake(0, 0, 320, 44);

   [self.segmentedControl addTarget:self action:@selector(didChangeSegmentControl:) forControlEvents:UIControlEventValueChanged];
   [self.view addSubview:self.segmentedControl];
   [self didChangeSegmentControl:self.segmentedControl]; // kick everything off
}

- (void)viewWillAppear:(BOOL)animated {
     [super viewWillAppear:animated];
     [self.activeViewController viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self.activeViewController viewDidAppear:animated];
 }

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [self.activeViewController viewWillDisappear:animated];
 }

- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    [self.activeViewController viewDidDisappear:animated];
 }

- (void)viewDidUnload{
       [super viewDidUnload];

 }


 #pragma mark -
 #pragma mark Segment control

 - (void)didChangeSegmentControl:(UISegmentedControl *)control {
       UIViewController* newCtl = [self.segmentedViewControllers objectAtIndex:control.selectedSegmentIndex];

       if(newCtl == activeViewController)
          return;
       if([activeViewController isViewLoaded]){
         [self.activeViewController viewWillDisappear:NO];
         [self.activeViewController.view removeFromSuperview];
         [self.activeViewController viewDidDisappear:NO];
       }
       if(newCtl != nil){
         activeViewController = newCtl;
         [self.activeViewController viewWillAppear:NO];
         [self.view addSubview:self.activeViewController.view];
         [self.activeViewController viewDidAppear:NO];

       }
}

Как мой privateviewcontroller и publicviewcontroller становятся частью navigationcontroller и получают доступ ко всем свойствам navigationcontroller

...