这可能看起来像是关于传递已经回复的数据的另一个问题,但不是(我在stackoverflow中搜索了很多次)
我解释说:
我使用Firebase来验证用户身份。 在我的问题中,我使用Google登录,而func位于 Appdelegate
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
我有一个基于scrollView(https://github.com/jakespracher/Snapchat-Swipe-View)的导航,所以viewdidload / didappear只在我的应用程序上启动一次(在开始时,而不是在我滑动到UIController时)。
所以我的问题:
我想将我的func标志(Google个人资料图片)中的图片从我的 Appdelegate 传递到 ProfileViewController 。 我希望在我的 Appdelegate 中使用我的功能(segue /现在没有工作。现在因为它在appdelegate和segue上,因为viewdidload /确实只出现了一次)
那我该怎么办?
我在 Appdelegate 上的功能上尝试了这个,但是在 controller.profile.image 上没有任何结果:
let image: UIImage = UIImage(data: data)!
var storyboard = UIStoryboard(name: "Main", bundle: nil)
var controller = storyboard.instantiateViewControllerWithIdentifier("Profile") as! ProfileViewController
controller.profile.image = image
请拜托,如果有人帮助我,我将不胜感激。
由于
答案 0 :(得分:0)
你的方向错误,你试图将图像设置为尚未加载的ViewController的ImageView。
您可以在视图控制器中使用UIImage对象,在ViewDidLoad上可以将图像设置为ImageView。
class ProfileViewController : UIViewController {
var imageFromPreviousPage : UIImage?
@IBOutlet weak var profile: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
profile.image = imageFromPreviousPage
}
}
现在将图像设置为此图像对象
let image: UIImage = UIImage(data: data)!
var storyboard = UIStoryboard(name: "Main", bundle: nil)
var controller = storyboard.instantiateViewControllerWithIdentifier("Profile") as! ProfileViewController
controller. imageFromPreviousPage = image
现在您可以将导航控制器推到ViewController上方。
如果你是从Appdelegate didFinishLauch尝试它,你需要将它设置为窗口的根视图。
希望它会对你有所帮助。