Ich habe vor kurzem an einer neuen App gearbeitet, und ich habe dieses seltsame Problem gehabt. Jedes Mal, wenn ich versuche, auf meine textviews.text -Eigenschaft außerhalb von viewdidload zuzugreifen, erhalte ich den Fehler "Instanzmitglied 'detailDescriptionLabel' (meine Textansicht) kann nicht vom Typ 'DetailViewController' (der Klasse, in der ich mich befinde) verwendet werden" Ich würde Ihre Hilfe wirklich schätzen. Vielen Dank.Swift - Zugriff auf UITextView von DetailViewController
Der Code, wo der Fehler kommt:
var updated: String = detailDescriptionLabel.text {
didSet {
if updated != oldValue {
textFieldDidChange()
}
}
}
Die ganze ganze Klasse, die die Zellen auf einem Tisch steuert (nur für den Fall):
var start : CGPoint?
var red : CGFloat = 0.0
var green : CGFloat = 0.0
var blue : CGFloat = 0.0
@IBAction func erase(sender: AnyObject) {
red = 1
green = 1
blue = 1
}
@IBAction func clear(sender: AnyObject) {
self.imageView.image = nil
}
@IBAction func blackPen(sender: AnyObject) {
red = 0
green = 0
blue = 0
}
@IBAction func redPen(sender: AnyObject) {
red = 1
green = 0
blue = 0
}
@IBAction func bluePen(sender: AnyObject) {
red = 0
green = 0
blue = 1
}
@IBOutlet weak var detailDescriptionLabel: UITextView!
@IBOutlet weak var imageView: UIImageView!
let notes = PFObject(className: "Notes")
var detailItem: AnyObject? {
didSet {
// Update the view.
self.configureView()
}
}
func configureView() {
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.configureView()
}
var updated: String = detailDescriptionLabel.text {
didSet {
if updated != oldValue {
textFieldDidChange()
}
}
}
func textFieldDidChange() {
let query = PFQuery(className: "Notes")
query.getObjectInBackgroundWithId("Content") { (notes, error) -> Void in
notes!["Content"] = self.detailDescriptionLabel.text
print("Updated")
}
}
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
let newText = change![NSKeyValueChangeNewKey] as! String
print(newText)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func draw(start : CGPoint, end: CGPoint) {
UIGraphicsBeginImageContext(self.imageView.frame.size)
let context = UIGraphicsGetCurrentContext()
imageView?.image?.drawInRect(CGRect(x: 0, y: 0, width: imageView.frame.width, height: imageView.frame.height))
CGContextSetLineWidth(context, 6)
CGContextBeginPath(context)
//Define starting point
CGContextMoveToPoint(context, start.x, start.y)
//Define end point
CGContextAddLineToPoint(context, end.x, end.y)
//Close the path between the starting and ending point (draw)
CGContextSetRGBStrokeColor(context, red, green, blue, 1)
CGContextStrokePath(context)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
imageView.image = newImage
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let Touch = touches.first as UITouch!
start = Touch.locationInView(self.imageView)
}
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
let Touch = touches.first as UITouch?
let end = Touch?.locationInView(self.imageView)
if let s = self.start {
draw(s, end: end!)
}
self.start = end
}
Das Problem weiterhin besteht nach wie vor, dass, wenn ich detailDescriptionLabel.text außerhalb viewDidLoad, den Fehler erwähnen kommt hoch. Trotzdem danke. –
Kann ich etwas mehr von Ihrem Code sehen, wie die "detailDescriptionLabel" -Deklaration, die Klassendeklaration usw. – Lazy
Ich habe die ganze Klasse in meiner Frage oben hinzugefügt. Vielen Dank. –