gpt4 book ai didi

ios - 共享变量

转载 作者:行者123 更新时间:2023-11-30 12:36:20 31 4
gpt4 key购买 nike

在构建我的第一个应用程序时跌跌撞撞。尝试将变量从一个 View Controller (“ViewController”)传递到另一个 View Controller (“SecondViewController”)。我在 Stack Overflow 上找到了一些代码,但收到错误,并且不确定我做错了什么。在第一个 View Controller 中,我有:

func prepareForSegue(segue: UIStoryboardSegue!, sender: Any!) {
if (segue.identifier == "segueTest") {
//Checking identifier is crucial as there might be multiple
// segues attached to same view
var secondVC = segue!.SecondViewController as ViewController;
secondVC.toPass = "email"

}
}

在第二个 View Controller 中我有:

var toPass:字符串!

我在第一个 View Controller 中收到错误:“类型的值没有成员”(参见图片)

我很困惑这是为什么。如果有任何建议,我将不胜感激。 2

(Swift 3?)我发布了下面两个 View Controller 的所有代码,看看是否有帮助。对于代码的困惑,我深表歉意。这是第一个 View Controller 代码:

import UIKit
import FBSDKLoginKit

extension UserDefaults {
// check for is first launch - only true on first invocation after app install and sends user to answer questions

static func isFirstLaunch() -> Bool {
let hasBeenLaunchedBeforeFlag = "hasBeenLaunchedBeforeFlag"
let isFirstLaunch = !UserDefaults.standard.bool(forKey: hasBeenLaunchedBeforeFlag)
if (isFirstLaunch) {
UserDefaults.standard.set(true, forKey: hasBeenLaunchedBeforeFlag)
UserDefaults.standard.synchronize()
}

print(hasBeenLaunchedBeforeFlag)
return isFirstLaunch
}
}

class ViewController: UIViewController, FBSDKLoginButtonDelegate {

override func viewDidLoad() {
super.viewDidLoad()

let loginButton = FBSDKLoginButton()
view.addSubview(loginButton)
loginButton.frame = CGRect(x: 16, y: 350, width: view.frame.width - 32, height: 50)
loginButton.delegate = self

self.view.backgroundColor = UIColor(patternImage: UIImage(named:"Book Funnel")!)

}

func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) {
print("Did log out of Facebook")
}

//Gather Facebook demographic information

func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
if error != nil {
print(error)
return
}

let login: FBSDKLoginManager = FBSDKLoginManager()
// Make login and request permissions
login.logIn(withReadPermissions: ["email", "public_profile"], from: self, handler: {(result, error) -> Void in

if error != nil {
// Handle Error
NSLog("Process error")
} else if (result?.isCancelled)! {
// If process is cancel
NSLog("Cancelled")
}
else {
// Parameters for Graph Request
let parameters = ["fields": "email, name"]

FBSDKGraphRequest(graphPath: "me", parameters: parameters).start {(connetion, result, error) -> Void in
if error != nil {
NSLog(error.debugDescription)
return
}

// Result
print("Result: \(result)")

// Handle vars
if let result = result as? [String:String],
let email: String = result["email"],
let fbId: String = result["id"] {
print("Email: \(email)")
print("fbID: \(fbId)")

func prepareForSegue(segue: UIStoryboardSegue?, sender: AnyObject?) {
if segue!.identifier == "segueTest" {
if let secondVC = segue!.SecondViewController as? ViewController {
secondVC.toPass = "email"
}
}
}


}
}
}
})


func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.

}
}
}

第二个 View Controller 代码:

import UIKit
import FBSDKCoreKit
import FBSDKLoginKit


class SecondViewController: UIViewController {


@IBOutlet weak var sliderLabel: UILabel!

@IBOutlet weak var verticalSlider: UISlider!
{
didSet{
verticalSlider.transform = CGAffineTransform(rotationAngle: CGFloat(-M_PI_2))


}
}

//Change label as slider moves

@IBAction func verticalSliderChanged(_ sender: UISlider) {

var currentValue = Double(sender.value);

sliderLabel.text = "\(currentValue)"

}

@IBOutlet weak var ratingSubmitted: UIButton!

@IBAction func checkmarkPressed(_ sender: Any) {


func viewDidLoad() {
super.viewDidLoad()

self.view.backgroundColor = UIColor(patternImage: UIImage(named:"Book Funnel")!)

}
}


@IBOutlet weak var checkmarkButton: UIButton!

@IBAction func checkmarkButtonPressed(_ sender: Any) {

let img:UIImageView = UIImageView(frame: CGRect(x: 30, y: 180, width: 250, height: 320))

let randomImage = arc4random()
if (randomImage % 3 == 0) {
img.image = UIImage(named: "hero.jpg")
} else if (randomImage % 3 == 1) {
img.image = UIImage(named: "hillary.jpg")
} else {
img.image = UIImage(named: "thistimeisdifferent.jpg")
}


// img.contentMode = UIViewContentMode.ScaleAspectFill
// img.backgroundColor = UIColor.redColor()
self.view.addSubview(img)

var toPass: String!

}


override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.

}


}

最佳答案

您对第二个 View Controller 的转换是错误的,因此它不知道其中的变量toPass

尝试更改此设置:

var secondVC = segue!.SecondViewController as     ViewController;

对此:

if let secondVC = segue.destination as? SecondViewController {
secondVC.toPass = "email"
}

关于ios - 共享变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42823788/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com