gpt4 book ai didi

ios - 使用 swift 在另一个类中使用 IBAction 调用函数

转载 作者:行者123 更新时间:2023-11-28 07:12:04 26 4
gpt4 key购买 nike

class EditTextViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UIPopoverPresentationControllerDelegate, UITextViewDelegate, UIDocumentInteractionControllerDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

@IBOutlet weak var textView: UITextView!
@IBOutlet var contentImageView: UIImageView!

func imageForTextView(UIView) -> UIImage {

UIGraphicsBeginImageContextWithOptions(textView.bounds.size, false, 0)

view.layer.renderInContext(UIGraphicsGetCurrentContext())
var image = UIGraphicsGetImageFromCurrentImageContext() as UIImage
UIGraphicsEndImageContext()

// println(image)
return image
}
}

上面的代码具有我要调用的函数。 imageForTextView() 获取我的 textView 的屏幕截图并将其转换为 UIImage。

class BackgroundEditTextViewController: UIViewController, UIPageViewControllerDataSource {

@IBAction func instagramButton(sender: AnyObject) {
println("yolo")

EditTextViewController().imageForTextView(EditTextViewController().self.textView)
// var editTextViewController = EditTextViewController()
// editTextViewController.imageForTextView(editTextViewController.textView)
}

}

BackgroundEditTextViewController 类是我尝试调用“imageForTextView()”的地方。当我点击“instagramButton”调用“imageForTextView()”时,我想看到在控制台中打印出的 UIImage。但我不断收到此错误 fatal error: expectedly found nil while unwrapping an Optional value
(lldb)
我曾尝试将“imageForTextView()”设为类函数,但无济于事。

旁注:我在 textView 后面有一个 UIImage,我想将其包含在图像屏幕截图中,不太确定如何修改我的 imageForTextView() 以获取 textView 和 contentImageView 的屏幕截图。提前致谢。

最佳答案

简单(而不是面向对象)的方法是与世界共享 imageForTextView,这意味着在该行的 func 之前添加 public - 这是一个简单的解决方案,但它会告诉你你的函数是否正常工作

public func imageForTextView(UIView) -> UIImage

另一种方法是使用委托(delegate)来创建一个函数,该函数接收一个闭包作为适合 imageForTextView 签名的参数,就像这样

public func doSomeDelegate((UIView)->UIImage)

然后使用 doSomeDelegate 调用 imageForTextView这是一般的想法

你可以在官方swift指南中找到很好的解释 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html

浏览到谈论委托(delegate)的部分

关于ios - 使用 swift 在另一个类中使用 IBAction 调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28077769/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com