Контроллер навигации во всплывающем окне

Я полный новичок в разработке приложений для iPad.

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

уровень, до которого я буду углубляться, является динамическим.

Пожалуйста, направьте меня с соответствующими ресурсами, чтобы помочь мне решить проблему.


person user640918    schedule 02.03.2011    source источник
comment
именно то, что я искал! :)   -  person Breakpoint    schedule 17.07.2012


Ответы (3)


Я делал это раньше, и это работает хорошо! Просто назначьте эту функцию своей кнопке (возможно, UIBarButtonItem):

UIPopoverController *popover;
bool isPopoverOpen = false;
-(void)openPopover{
    if(!isPopoverOpen){
        FirstViewController *firstViewCtrl = [[PartsViewCtrl alloc] init];
        UINavigationController *navbar = [[UINavigationController alloc] initWithRootViewController:firstViewCtrl];
        [firstViewCtrl release];
        navbar.contentSizeForViewInPopover = CGSizeMake(TABLE_WIDTH, TABLE_HEIGHT);
        popover = [[UIPopoverController alloc] initWithContentViewController:navbar];
        [navbar release];
        popover.delegate = self;
        popover.popoverContentSize = CGSizeMake(TABLE_WIDTH, TABLE_HEIGHT);
        [popoverOnPartsView presentPopoverFromBarButtonItem:barButtonItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
        isPopoverOpen = true;
    }else{
        [popover dismissPopoverAnimated:YES];
        [popover release];
        isPopoverOpen = false;
    }
}

И реализуйте эту функцию в FirstViewController, который имеет UITableView:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    SecondViewController *secondViewController = [[SecondViewController alloc] init];
    [self.navigationController pushViewController:secondViewController animated:YES];
    [secondViewController release];
}

Теперь вы также можете добавить UITableView в SecondViewController. И используйте этот сценарий для других таблиц!

Я надеюсь, что это работает для вас!

person Hamed Rajabi    schedule 03.11.2011

Когда вы создаете всплывающее окно, вам просто нужно выделить UINavigationController и используйте его для управления иерархией представлений внутри самого всплывающего окна. Быстрый поиск в Интернете выявил это руководство, в котором рассказывается о том, что вам нужно. знать.

Я также хотел добавить, что вы должны быть в курсе разработки на Objective-C и iOS в целом. Не пытайтесь слепо использовать то, что вы нашли в сети, не понимая, что вы на самом деле делаете :)

person jdmunro    schedule 02.03.2011
comment
Привет. Спасибо за ранний ответ. Я буду работать над этим и обновлять, если это работает для меня. :) - person user640918; 03.03.2011

Do the following steps 

1) В действии кнопки (при нажатии на эту кнопку должно появиться всплывающее окно) напишите код

[здесь PopOverContentViewController — это viewController, где у меня есть табличное представление и несколько списков элементов, которые должны отображаться при появлении всплывающего окна]

 - (IBAction)callPopOver:(id)sender 
  {


    UIButton *button = (UIButton*)sender;
    PopOverContentViewController1 *popOverContent = [[PopOverContentViewController1     alloc]initWithNibName:@"PopOverContentViewController1" bundle:nil];

    UINavigationController *navbar = [[UINavigationController alloc]  initWithRootViewController:popOverContent];

    navbar.contentSizeForViewInPopover = CGSizeMake(266, 200);
    popover = [[UIPopoverController alloc] initWithContentViewController:navbar];
    popover.delegate = self;
    [popover presentPopoverFromRect:CGRectMake(button.frame.size.width / 2,   button.frame.size.height / 1, 1, 1) inView:button   permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
    [popover setPopoverContentSize:CGSizeMake(266, 200) animated:YES]; 
    [popUpContent release];


    }      

2) теперь, чтобы изменить представление таблицы при нажатии на любую из строк, введите этот код в PopOverViewController.m

[здесь PopOverViewController2 – это ViewController, в котором отображается следующее табличное представление]

    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    PopOverViewController2 *secondViewController = [[PopOverViewController2 alloc] init];
    [self.navigationController pushViewController:secondViewController animated:YES];
    [secondViewController release];
    }

3) чтобы избежать изменения размера всплывающего окна во время навигации, напишите следующий код в viewDidLoad обоих контроллеров представления (т.е. PopOverContentViewController1 и PopOverContentViewController2)

 - (void)viewDidLoad
 {
  [super viewDidLoad];
  [self setContentSizeForViewInPopover:CGSizeMake(266, 200)];
 }
person MouzmiSadiq    schedule 11.09.2012