Ich versuche, Daten zwischen meinen beiden View-Controller in meinem UIscrollview
übergeben. Ich versuche, Delegation zu verwenden, um Daten zwischen Viewcontroller1
und Viewcontroller2
zu senden. Der Delegierte ist Viewcontroller
, während der Delegierer Viewcontroller1
und Viewcontroller2
ist.UIscrollview Delegation
In dem unten angegebenen Code, wenn der Schalter in Viewcontroller1
umgeschaltet wird, macht es den Schalter in Viewcontroller2
in den "Aus" -Zustand versetzt. Ich bekomme immer wieder die
Fehler, wenn ich es ausführen, aber ich habe keine Ahnung, was dieses Problem verursacht. Irgendwelche Ideen warum?
Unten ist die Viewcontroller
, die die Uiscrollview
und die Subviews/childviews
}
hier ist der Viewcontoller1 Code
protocol testing{
func test1()
}
class ViewController1: UIViewController {
var delegate:testing?
@IBOutlet weak var switch1: UISwitch!
override func viewDidLoad() {
super.viewDidLoad()
let vc = ViewController()
self.delegate = vc
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func switch1toggled(sender: AnyObject) {
delegate?.test1()
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
}
und hier ist der Viewcontroller 2 Code
enthältimport UIKit
class ViewController: UIViewController, testing {
var vc1 = ViewController1(nibName: "ViewController1", bundle: nil)
var vc2 = ViewController2(nibName: "ViewController2", bundle: nil)
@IBOutlet weak var scrollView: UIScrollView!
func test1() {
vc2.switch2.on = false
}
override func viewDidLoad() {
super.viewDidLoad()
self.addChildViewController(vc1)
self.scrollView.addSubview(vc1.view)
vc1.didMoveToParentViewController(self)
var frame1 = vc2.view.frame
frame1.origin.x = self.view.frame.size.width
vc2.view.frame = frame1
self.addChildViewController(vc2)
self.scrollView.addSubview(vc2.view)
vc2.didMoveToParentViewController(self)
self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width * 2, self.view.frame.size.height);
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
import UIKit
class ViewController2: UIViewController {
@IBOutlet weak var switch2: UISwitch!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func switch2toggled(sender: AnyObject) {
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
}
sorry für den langen Post, ich habe seit einer Woche, wie sich ändern, den Zustand eines anderen Schalters von Makeln einen Schalter in einer anderen Klasse stecken, und das war der effizienteste Weg, den ich
gefunden
Sie vc1 Sie setzen seinen Delegaten auf eine neue, leere Instanz von 'ViewController', die nicht mit ihren IBOutlets verbunden ist, so erhalten Sie eine Null-Ausnahme. Sie können den Delegaten einer Klasse nicht selbst festlegen. Der Delegat muss vom Delegierten aus festgelegt werden. in viewcontroller set 'vc1.delegate = vc2' – Paulw11
@ Paulw11 würde es Ihnen etwas ausmachen, genauer zu sein, wenn ich vc1.delegate = vc2 in der Viewcontroller-Klasse setzen, um es zum Laufen zu bringen? –
@ Paulw11 wenn ich versuche, den oben genannten Code in Viewcontroller zu tun, int die Funktion func test1() bekomme ich den Fehler "Kann den Wert nicht zuweisen" Viewcontroller2 ", um" Testing? " –