Я хочу изменить название почтовых кнопок в SLComposeServiceViewController. мне удалось получить UIButton:ios share extension post button title
NSArray* subviews =[self.navigationController.navigationBar subviews];
UIButton* postButton =[subviews lastObject];
и я попытался установить название, как это:
[postButton setTitle:@"Save" forState:UIControlStateNormal];
но название не изменилось.
Может ли кто-нибудь помочь мне с этим?
Я видел расширение доли Evernote на моем IPad и это выглядит следующим образом:
UPDATE
Мое решение:
Я нашел решение моего вопроса, я удалил оригинальной навигационной панели и создать пользовательскую панель навигации.
У меня есть два нав бар: 1. с «отменить» \ «сохранить» кнопки 2. с помощью кнопки «назад»
и меняю их, когда переходить к другим ViewController (в моем случае мне нужно было для загрузки файла и пользователю необходимо выбрать местоположение из списка)
ПРИМЕЧАНИЕ. Если вы не реализуете configurationItems
, вам нужна только первая панель навигации. (Просто позвонить, чтобы установить пользовательские навигационную панель из viewDidAppear
Так что мой код здесь:
@property (strong, nonatomic) UINavigationBar *customNavBar;
-(void) viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
self.customNavBar = [[UINavigationBar alloc] initWithFrame:self.navigationController.navigationBar.bounds];
[self.navigationController.navigationBar removeFromSuperview];
[self.navigationController.view addSubview:self.customNavBar];
[self setCancelSaveNavigationItem];
}
setCancelSaveNavigationItem -> вызывается из viewDidAppear из shareViewController
-(void)setCancelSaveNavigationItem
{
UINavigationItem *newItem = [[UINavigationItem alloc] init];
UIBarButtonItem *cancelBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Cancel",nil) style:UIBarButtonItemStylePlain target:self action:@selector(cancelButtonTapped:)];
UIBarButtonItem *saveBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Done",nil) style:UIBarButtonItemStyleDone target:self action:@selector(saveButtonTapped:)];
newItem.leftBarButtonItem = cancelBarButtonItem;
newItem.rightBarButtonItem = saveBarButtonItem;
[self.customNavBar setItems:@[newItem]];
[self.navigationItem setBackBarButtonItem:cancelBarButtonItem];
[self.navigationItem setRightBarButtonItem:saveBarButtonItem];
if(self.item.value == nil){
saveBarButtonItem.enabled = NO;
}
}
setBackNavigationItem -> называется в configurationItems
-> в self.item.tapHandler
функция
-(void)setBackNavigationItem
{
UINavigationItem *newItem = [[UINavigationItem alloc] init];
UIBarButtonItem *selectBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Select",nil) style:UIBarButtonItemStylePlain target:self action:@selector(selectButtonTapped:)];
UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:[NSString stringWithFormat:@"❮ %@", NSLocalizedString(@"Back",nil)] style:UIBarButtonItemStylePlain target:self action:@selector(backButtonTapped:)];
newItem.leftBarButtonItem = backBarButtonItem;
newItem.rightBarButtonItem = selectBarButtonItem;
[self.customNavBar setItems:@[newItem]];
[self.navigationItem setBackBarButtonItem:backBarButtonItem];
[self.navigationItem setRightBarButtonItem:selectBarButtonItem];
}
Кнопки
ручки постучала:
- (void)backButtonTapped:(id)sender {
if([self.navigationController.viewControllers count] ==2){
[self setCancelSaveNavigationItem];
}
[self.navigationController popViewControllerAnimated:YES];
}
- (void)cancelButtonTapped:(id)sender {
[self cancel];
}
- (void)selectButtonTapped:(id)sender {
...
[self setCancelSaveNavigationItem];
[self popConfigurationViewController];
}
- (void)saveButtonTapped:(id)sender {
...
[self cancel];
}
И это работа для меня !!!
Результат:
Вы уверены UIButton * postButton = [подвиды lastObject]; действительно ли вы пытаетесь настроить? Попробуйте NSLog это название. – user3344236
@ user3344236 Да, я попробовал, поэтому я предположил, что это кнопка post ... –