Ios UIImageView未正确初始化并返回nil
在我的Ios UIImageView未正确初始化并返回nil,ios,swift,uiimageview,Ios,Swift,Uiimageview,在我的CathyTaskLogMessageViewController类中,我有以下代码: import UIKit class CathyTaskLogMessageViewController: UIViewController { @IBOutlet var tapGestureRecognizer: UITapGestureRecognizer! @IBOutlet weak var messageTextView: UITextView! var defa
CathyTaskLogMessageViewController
类中,我有以下代码:
import UIKit
class CathyTaskLogMessageViewController: UIViewController {
@IBOutlet var tapGestureRecognizer: UITapGestureRecognizer!
@IBOutlet weak var messageTextView: UITextView!
var defaultPictureButton: UIButton = UIButton(type: UIButtonType.Custom) as UIButton
override func viewDidLoad() {
super.viewDidLoad()
defaultPictureButton = UIButton(type: UIButtonType.Custom) as UIButton
defaultPictureButton.frame = CGRectMake(100, 100, 40, 40)
defaultPictureButton.addTarget(self, action: "defaultPictureButtonTapped:", forControlEvents: UIControlEvents.TouchUpInside)
defaultPictureButton.setImage(UIImage(named: "defaultPicture"), forState: UIControlState.Normal)
defaultPictureButton.layer.cornerRadius = 20.0
defaultPictureButton.clipsToBounds = true
defaultPictureButton.exclusiveTouch = true
self.view.addSubview(defaultPictureButton)
}
func defaultPictureButtonTapped(sender: UIButton) {
let imageViewerViewController = ImageViewerViewController()
imageViewerViewController.image = self.defaultPictureButton.imageView!.image
imageViewerViewController.centerPictureFromPoint(self.defaultPictureButton.frame.origin, ofSize: self.defaultPictureButton.frame.size, withCornerRadius: self.defaultPictureButton.layer.cornerRadius)
}
}
在我的ImageViewerViewController
类中,我有以下代码:
import UIKit
class ImageViewerViewController: UIViewController, UIScrollViewDelegate {
@IBOutlet weak var image: UIImage!
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
func centerPictureFromPoint(point: CGPoint, ofSize size: CGSize, withCornerRadius radius: CGFloat) {
self.imageView = UIImageView(frame: CGRect(x: point.x, y: point.y, width: size.width, height: size.height))
self.imageView.layer.cornerRadius = radius //I am getting the error here
self.imageView.clipsToBounds = true
self.imageView.image = self.image
}
}
我得到的错误是:
致命错误:在展开可选值时意外发现nil
。在我看来,我通过编写self.imageView=UIImageView(frame:CGRect(x:point.x,y:point.y,width:size.width,height:size.height))初始化imageView
。然而,它返回零。有人对此有解决方案吗?如果您不想通过xib或故事板启动imageView。将属性声明更改为:
@IBOutlet weak var imageView: UIImageView!
到
弱导致立即释放imageView。或者如果它是一个出口,则将其连接起来。您可以保留@IBOutlet引用,但删除弱子句可以避免编译器终止对UIImageView的引用
var imageView: UIImageView!