2015-07-18 2 views
0

Я новичок в iOS. В контроллере моего дочернего представления я сделал некоторые изменения в данных. Я вставил проделанную кнопку для хранения данных и вытащил контроллер вида из стека контроллера навигации. если я нажму кнопку навигации навигационного контроллера, она автоматически вернется обратно, не сохраняя данные. если я сделал какие-либо изменения в данных, а затем я нажал кнопку назад, мне нужно показать предупреждение, поскольку «сделаны модификации, и вы обязательно захотите вернуться». если пользователь нажимает кнопку «Отмена» в режиме предупреждения, мне нужно прекратить просмотр, исчезая и все еще стоять на том же контроллере представления. Если у кого-нибудь есть ответ, пожалуйста, помогите мне.как остановить просмотр, исчезающий при нажатии кнопки навигации на панели управления нажатием кнопки

+0

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

ответ

1

Я думаю, что это способ сделать это

- (void)viewDidLoad{ 
     [super viewDidLoad]; 
     [self.navigationItem setLeftBarButtonItem:nil]; 
     [self.navigationItem setHidesBackButton:YES]; 

    UIButton *myButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 44)]; 
    [myButton setImage:[UIImage imageNamed:@"back.png"] forState:UIControlStateNormal]; 
    //back.png = your image name 
    [myButton setTitle:@"Back" forState:UIControlStateNormal]; 
    [myButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 
    [myButton addTarget:self action:@selector(backButtonTapped:) forControlEvents:UIControlEventTouchUpInside]; 
    UIBarButtonItem *customBackButton = [[UIBarButtonItem alloc] initWithCustomView:myButton]; 
    [self.navigationItem setLeftBarButtonItem:customBackButton]; 

    } 

    - (void)backButtonTapped:(id)sender{ 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Message" message:@"modifications are made are sure want to go back" delegate:self cancelButtonTitle:@"Go Back" otherButtonTitles:@"Stay Here", nil]; 

     [alert show]; 
    } 

    - (void)alertView:(UIAlertView *)alertView 
    clickedButtonAtIndex:(NSInteger)buttonIndex{ 
     if (buttonIndex == [alertView cancelButtonIndex]){ 
      [self.navigationController popViewControllerAnimated:YES]; 
     }else{ 
      //Stay on the page and do something 
     } 
    } 

Не забудьте добавить <UIAlertViewDelegate>

+0

просто добавьте кнопку левого бара (переопределить) с вашим .. и сделайте селектор и сделайте часть предупреждения в этом селекторе. Вышеуказанный ответ подходит для вашего требования –

+0

Это правильный ответ ... но если я вставил пользовательскую кнопку навигации назад, она не отображает стрелку ... поэтому мне нужно обнаружить обратную кнопку, и мне нужно показать предупреждение ... – karthik

+0

@karthikjin вы должны найти значок стрелки назад для себя, например, например, в этом [link] (https://www.iconfinder.com/icons/352020/arrow_back_icon#size=32). Загрузка значок назад из ссылки и переименуйте его как «back.png» и добавьте его в свой проект. Затем вы можете увидеть кнопку «Назад». Теперь нажмите кнопку «Назад» размером 32x32. –

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