如何根据不同类型的segue执行不同的功能?

How to perform different function on the base of different type of segue?

我希望我能够解释我的问题。 我有一个名为 TouristPictureViewController

的 ViewController
class TouristPictureViewController: UIViewController {

    @IBOutlet weak var picture: UIImageView!
    var userID = Auth.auth().currentUser?.uid
    var imageURL:String?



    override func viewDidLoad() {
        super.viewDidLoad()

        getProfilePicture(SuccessCompletion: { (Img) in
            self.picture.image = Img
        }) { (error) in
            print(error)
        }
    }



    func getProfilePicture(SuccessCompletion: @escaping (_ image:UIImage) -> (), FailureCompletion: @escaping (_ error:Error) -> ()) {

           let referecne = Storage.storage().reference(withPath: "user/\(userID!)")
           referecne.getData(maxSize: 5 * 1024 * 1024) { (data, error) in

               if let err = error {
                   print(err)
                   FailureCompletion(err)
               }
               else {
                   if let _data = data {
                       let myImage:UIImage! = UIImage(data: _data)
                       SuccessCompletion(myImage)
                   }
               }
           }

       }
}

这个VC可以在两种不同的情况下调用。首先,当用户想要查看他们的个人资料图片时调用它,在这种情况下,它通过 Storyboard.instantiateViewController 触发,然后在 VC, getProfilePicture函数被调用。现在,这个 VC 也是通过 segue 触发的,在这种情况下,我将一个图像 URL 传递给这个 VC,因此我想在这个 [=] 中显示那个特定的图像29=]。现在我应该把什么条件放在这里,这样 getProfile 函数不应该在 viewDidLoad 中执行,当我通过执行 Segue 接近这个 VC 时?

您可以声明一个全局布尔变量,例如 shouldLoadProfile

TouristPictureViewController

var shouldLoadProfile: bool = false

然后在 viewDidLoad() 方法中,检查 shouldLoadProfile 与否。此外,在转换到 TouristPictureViewController.

之前,您需要将 true 或 false 设置为 shouldLoadProfile 变量
override func viewDidLoad(){
    super.viewDidLoad()

    if shouldLoadProfile{

        getProfilePicture(SuccessCompletion: { (Img) in
            self.picture.image = Img
        }) { (error) in
            print(error)
        }

    }else{
        //set imageURL into the UIImageView
    }
}

只需检查imageURL,在instantiateViewController案例

中是nil
override func viewDidLoad() {
    super.viewDidLoad()

    if let urlString = imageURL {
        // load image and assign it to self.picture.image
    } else {
        getProfilePicture(SuccessCompletion: { img in
            self.picture.image = img
        }) { error in
            print(error)
        }
    }
}