通过构建我的第一个应用程序绊倒我的路。试图从一个视图控制器(“ViewController”)传递一个变量到另一个(“SecondViewController)。我在Stack Overflow上找到了一些代码,但是出现了一个错误,我不知道我在做什么错误。有:共享变量
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"
}
}
在第二视图控制器我有:
VAR toPass:字符串
我正在一个错误,虽然第一视图控制器: “类型的值没有成员'(见图)
我为什么会这样呢。我会很感激任何建议。 2
(Swift 3?)我发布了下面两个视图控制器的所有代码,看看是否有帮助。我为代码的混乱道歉。这是第一个视图控制器代码:
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.
}
}
}
第二视图控制器代码:
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.
}
}
有时,当用户剪切和粘贴到堆栈溢出,代码格式被犯规。调整您的格式以符合您的实际代码,因为它看起来像是在这里发生的。 –