2017-01-06 2 views
0

Я использую segue для отправки данных от одного viewController до destinationViewController. Я устанавливаю кнопку и использую push segue для подключения к следующему контроллеру. В первом представлении я устанавливаю логическое значение для проверки того, что изображения пусты или нет. Если будет пустое, оно выведет предупреждение, чтобы напомнить пользователям. В случае успеха он отправит изображения в следующий контроллер представления.Как остановить переход к следующему контроллеру? (swift)

Хотя я могу передавать изображения и вызывать предупреждение, он также переходит к следующему контроллеру представления, если есть какой-либо пустой. Кроме того, предупреждение выталкивается после перехода к следующему контроллеру представления, а не в первом контроллере представления

Теперь, вот код

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    if Jumpsuit.isHidden == false && self.Hair.image != nil && self.Jumpsuit.image != nil && self.Shoes.image != nil { 

     let DestViewController : ChooseBGViewController = segue.destination as! ChooseBGViewController 

     DestViewController.imgHair = Hair.image 
     DestViewController.imgJumpsuit = Jumpsuit.image 
     DestViewController.imgShoes = Shoes.image 
     DestViewController.dressingtype = 1 
    } else if Jumpsuit.isHidden == false && self.Hair.image == nil || self.Jumpsuit.image == nil || self.Shoes.image == nil { 
     let alert = UIAlertView() 
     alert.title = "No Image" 
     alert.message = "Please check again" 
     alert.addButton(withTitle: "OK") 
     alert.show() 

    } 
} 

Как я могу остановить прыжки на следующий контроллер представления и всплывающее уведомление в контроллере первого взгляда. Пожалуйста помоги!

ответ

4

Для этого вы можете использовать shouldPerformSegue(withIdentifier:sender:) и вернуть значение Bool по вашему соглашению.

override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool { 
    if Jumpsuit.isHidden == false && self.Hair.image == nil || self.Jumpsuit.image == nil || self.Shoes.image == nil { 
     //Show UIAlertController instead of UIAlertView it is deprecated 
     return false 
    } 
    return true 
} 
+0

Теперь я могу выскочить в первом контроллере представления, но я не могу отправить изображения на следующий контроллер представления. Где я должен добавить код? – HappyChan

+0

Я сделал это. Большое спасибо! – HappyChan

+0

@ HappyChan Добро пожаловать! –

0

Когда пользователь нажал на кнопку вы будете использовать IBAction, что первый будет проверять то, что вам нужно (изображение ..), а затем вы можете использовать 2 подхода:

  1. Теперь вы можете использовать performSegue который будет вызывать известное prepareForSegue и использовать SEGUE созданный
  2. вы можете использовать instantiateViewController(withIdentifier: подход следующим образом (и не забудьте отключить SEGUE):

    let nextVC = storyboard?.instantiateViewController(withIdentifier: "YourViewControllerID") 
    self.present(nextVC!, animated: true, completion: nil) 
    

    или если у вас есть навигационный контроллер:

    self.navigationController?.pushViewController(nextVC!, animated: true) 
    
Смежные вопросы