2013-08-16 2 views
0

Я создал приложение, которое имеет представление, табличное представление и текстовое представление. У меня настроено мое приложение таким образом, что когда пользователь нажимает кнопку «Войти в систему», он берет их в tableview и нажимает на ячейка в виде таблицы переводит их в textview. Я использовал только один xib для всех этих. Все работает нормально. Теперь, когда я перехожу к представлению таблицы, UIBarButton имеет 3 кнопки, Back to view (Left), Back to table view (Right) и кнопку clear (Right), и когда я нажимаю на ячейку в виде таблицы, она переходит в текстовое представление и все 3 кнопки все еще там. То, что мне нужно, - это когда появляется табличное представление, кнопка «Назад к журналу» должна быть скрытой, а другие 2 должны быть видны, а когда я нахожусь в текстовом режиме, «Назад к основному» и «Назад в журнал» должны быть видимыми, а кнопка очистки должна быть скрыта. Есть ли способ достичь этого? Это мои коды для UIBarButtons:Переключить видимость UIBarButton

UIBarButtonItem *clearHistory=[[UIBarButtonItem alloc]initWithTitle:@"Clear History" style:UIBarButtonItemStyleBordered target:self action:@selector(clearTable)]; 

    UIBarButtonItem *btnBack=[[UIBarButtonItem alloc]initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(goBack)]; 
    self.navigationItem.leftBarButtonItem=btnBack; 

    UIBarButtonItem *btnBacklog=[[UIBarButtonItem alloc]initWithTitle:@"Back to log" style:UIBarButtonItemStyleBordered target:self action:@selector(goBacklog)]; 

    self.navigationItem.rightBarButtonItems=[NSArray arrayWithObjects:clearHistory,btnBacklog, nil]; 


- (void)goBack { 
    self.tableLogView.hidden = YES; 
    self.navigationController.navigationBarHidden=YES; 
    self.viewLogToolbar.hidden=NO; 
    self.extendedView.hidden = YES; 
} 

- (void)goBacklog { 
    self.tableLogView.hidden = NO; 
    self.navigationController.navigationBarHidden=NO; 
    self.viewLogToolbar.hidden=YES; 
    self.extendedView.hidden = YES; 
} 

-(void)clearTable 
{ 
    if([tableData count]) 
    { 
    UIAlertView *message= [[UIAlertView alloc] initWithTitle:@"Delete All History" message:@"Are you sure?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Delete", nil]; 
     [message show]; 
    } 
    else 
    { 
     UIAlertView *message= [[UIAlertView alloc] initWithTitle:@"Message" message:@"No History" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [message show]; 
    } 


} 

ответ

0

Изменить код следующим образом: Он не скрывает, но выполняет ту же самую функцию. Надеюсь, это то, что вы ожидаете.

self.navigationController.navigationBarHidden=YES; 
    UIBarButtonItem *clearHistory=[[UIBarButtonItem alloc]initWithTitle:@"Clear" style:UIBarButtonItemStyleBordered target:self action:@selector(clearTable)]; 
    self.navigationItem.rightBarButtonItem=clearHistory; 

    UIBarButtonItem *btnBack=[[UIBarButtonItem alloc]initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(goBack)]; 
    self.navigationItem.leftBarButtonItem=btnBack; 



- (void)goBack { 
    self.tableLogView.hidden = YES; 
    self.navigationController.navigationBarHidden=YES; 
    self.viewLogToolbar.hidden=NO; 
    self.extendedView.hidden = YES; 

} 

- (void)goBacklog { 
    self.tableLogView.hidden = NO; 
    self.navigationController.navigationBarHidden=NO; 
    self.viewLogToolbar.hidden=YES; 
    self.extendedView.hidden = YES; 

    [self.navigationItem.rightBarButtonItem setTitle:@"Clear" ]; 
    [self.navigationItem.rightBarButtonItem setAction:@selector(clearTable)]; 
} 

Поместите этот код внутри функции, где и перемещаться от Tableview к TextView

[self.navigationItem.rightBarButtonItem setTitle:@"Back to log" ]; 
[self.navigationItem.rightBarButtonItem setAction:@selector(goBacklog)]; 

Если вы все еще хотите сохранить 2 правые кнопки в массиве, то единственное, что и может сделать, это переключить опцию Включить между две кнопки, такие как

UIBarButtonItem *ubi= [self.navigationItem.rightBarButtonItems objectAtIndex:0]; 

ubi.enabled=NO/YES; 
+0

Спасибо, приятель, я знаю, что могу рассчитывать на вас :) – Gamerlegend

0

UIBarButton не имеет hidden свойство.

Самый простой способ показать только желаемые кнопки - это динамически изменять значения и self.navigationItem.rightBarButtonItem. То есть, каждый раз, когда вы меняете экраны, вы устанавливаете эти значения в нужные. Если вы хотите анимации во время изменения, используйте

[self.navigationItem setLeftBarButtonItem:actualBarButton animated: YES] 

выражение вместо простого назначения собственности.

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