2010-06-09 2 views
1

Я добавил тулбаре с этим кодом:Как удалить Subview из navigationController?

 

- (void)viewWillAppear:(BOOL)animated { 
    UIBarButtonItem *yesterday = [[UIBarButtonItem alloc]initWithTitle:@"Yesterday" 
                   style:UIBarButtonItemStyleBordered target:self action:@selector(yesterday:)]; 
    UIBarButtonItem *today = [[UIBarButtonItem alloc]initWithTitle:@"Today" 
                  style:UIBarButtonItemStyleDone target:self action:@selector(today:)]; 
    UIBarButtonItem *tomorrow = [[UIBarButtonItem alloc]initWithTitle:@"Tomorrow" 
                   style:UIBarButtonItemStyleBordered target:self action:@selector(tomorrow:)]; 
    UIBarButtonItem *month = [[UIBarButtonItem alloc]initWithTitle:@"Month" 
                  style:UIBarButtonItemStyleBordered target:self action:@selector(month:)]; 
    NSArray *items = [NSArray arrayWithObjects:yesterday,today,tomorrow,month, nil]; 

    [yesterday release]; 
    [today release]; 
    [tomorrow release]; 
    [month release]; 

    UIToolbar *toolbar = [[UIToolbar alloc] init]; 
    [toolbar sizeToFit]; 
    [toolbar setFrame:CGRectMake(0, 20, 320, 40)]; 
    [toolbar setItems:items]; 
    [self.navigationController.view addSubview:toolbar]; 
} 
 

но когда я изменить вид с помощью контроллера навигации панель инструментов остается там ...

, как я могу удалить этот подвид?

ответ

2

UINavigationController имеет встроенную панель инструментов, которая по умолчанию скрыта. Вы можете отобразить его с помощью [navigationController setNavigationBarHidden:animated:];. Вместо этого вы можете использовать это. Затем перед тем, как вы нажмете контроллер вида, установите для свойства hidesBottomBarWhenPushed свойства этого представления значение true.

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

Чтобы ответить на ваш конкретный вопрос, однако, чтобы удалить панель инструментов из любого супервизора, используйте [toolbar removeFromSuperview]. В этом случае я бы пошел с более чистым решением, используя панель инструментов, встроенную в навигационные контроллеры.

+0

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

+0

Итак, вы добавляете его в неправильный вид. Вы добавляете его в navigationController.view, но то, что вам нужно, - это представление, контролируемое контроллером представления поверх стека контроллера представления контроллера навигации. '[[[navigationController viewControllers] lastObject] .view addSubview: toolbar];' (или это может быть первый объект, я не уверен) ... или вы могли бы просто использовать '[self addSubview : панель инструментов]; 'в этом контексте. Если вы добавите его в этот вид, он должен соскользнуть с этим видом, когда вы нажимаете другой контроллер вида. –

+0

Кажется, что эти параметры не работают 4 меня: S просто работает, если я добавляю subview с этим: [self.navigationController.view addSubview: панель инструментов]; –

Смежные вопросы