私の最初のアプリを構築する途中で困っています。 ( "ViewController")から別の( "SecondViewController")に変数を渡そうとしています。Stack Overflowでいくつかのコードが見つかりましたが、エラーが発生していて、何が間違っているのか分かりません。持っている:変数を共有する
私が持っている第2のビューコントローラで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?)以下の2つの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.
}
}
}
第2のビューコントローラコード:
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.
}
}
、コードの書式設定が汚れます。ここで起きたように見えるので、実際のコードに合わせて書式を調整してください。 –