【发布时间】:2015-04-15 12:50:15
【问题描述】:
我想要一个 UIViewControllers 的 UIScrollView。我测试了 ScrollView,它工作正常,除非我尝试添加 ViewControllers。该项目构建良好,但我收到指向 ViewController 的“fatal error: unexpectedly found nil while unwrapping an Optional value”错误,尤其是以下行:
self.imageView.image = UIImage(named: self.image!)
但是,当我检查对象时,我可以看到变量 image 和 text 在 ViewController 中有值。我正在使用 Xcode 6.3 Beta 并构建到 iOS8.1 目标。
代码如下:
import UIKit
class ViewController: UIViewController {
//@IBOutlet weak var contentScrollView: UIScrollView!
@IBOutlet var contentScrollView: UIScrollView!
//test to make sure ScrollView functions
//let colors = [UIColor.redColor(),UIColor.blueColor(), UIColor.greenColor(), UIColor.whiteColor(), UIColor.blackColor(), UIColor.yellowColor()]
var frame = CGRectMake(0, 0, 0, 0)
var dataArray = [PostItem]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var da = PostItem(text: "test 1", pic: "beans.jpg")
self.dataArray.append(da!)
da = PostItem(text: "test 2", pic: "coffee.jpg")
self.dataArray.append(da!)
da = PostItem(text: "test 3", pic: "coffeeCup.jpg")
self.dataArray.append(da!)
for index in 0..<self.dataArray.count{
self.frame.origin.y = self.contentScrollView.frame.size.height * CGFloat(index)
self.frame.size = self.contentScrollView.frame.size
self.contentScrollView.pagingEnabled = false
let tempPost = self.dataArray[index]
var vc = PostViewController()
vc.text = tempPost.postText
vc.image = tempPost.postImage
self.contentScrollView.addSubview(vc.view)
}
self.contentScrollView.contentSize = CGSizeMake(self.view.frame.size.width, CGFloat(self.dataArray.count) * self.contentScrollView.frame.height)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}}
这是我要添加的 ViewController 的代码:
import UIKit
class PostViewController: UIViewController {
//let postItem
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var postToFBButton: UIButton!
@IBOutlet weak var postToTwitterButton: UIButton!
@IBOutlet weak var postText: UILabel!
var image:String?
var text:String?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.imageView.image = UIImage(named: self.image!)
self.postText.text = text!
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}}
【问题讨论】:
-
也许 UIImage() 返回 nil
标签: ios iphone swift uiviewcontroller uiscrollview