ios - Swift - 从 DetailViewController 访问 UITextView

标签 ios swift scope uitextview

我最近一直在开发一个新应用程序,但我一直遇到这个奇怪的问题。每次我尝试在 viewdidload 之外访问我的 textviews.text 属性时,都会收到错误“实例成员 'detailDescriptionLabel'(我的 textview)不能在类型 'DetailViewController'(我所在的类)上使用”我真的很感谢您的帮助。谢谢。

出现错误的代码:

var updated: String = detailDescriptionLabel.text {
    didSet {

        if updated != oldValue {
            textFieldDidChange()
        }

    }
}

整个类,控制表格上的单元格(以防万一):

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
}

最佳答案

似乎不允许以这种方式设置成员变量...您需要实现 textViewDidChange 委托(delegate)方法

关于ios - Swift - 从 DetailViewController 访问 UITextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37950749/

相关文章:

ios - 从 objc 突变 swift 数组?

java - 在 JavaFX 中使用 lambda 表达式 block 外部的变量

ruby-on-rails - 按父属性排序的 Rails 作用域顺序

ios - 更改谷歌地图iOS sdk上的默认位置

ios - 如何从Bundle获取PNG文件的资源路径?

ios - UITableView 自定义部分页脚

javascript - Angularjs - 使用数据库中的新数据重新加载范围

IOS-如何将json字符串转换为对象

ios - SceneKit:zFar 或 Far Clipping 值会影响定向光及其阴影吗?

ios - Swift 4 - UIActivityViewController 共享到 Outlook 主题和标题