iOS开发 - 视图与视图控制器有什么关系?

时间:2015-04-02 16:25:10

标签: ios cocoa-touch interface-builder uistoryboard xcode-storyboard

我刚刚开始iOS开发,我很想知道视图和视图控制器的正确实现是什么。

例如,我用UIImageView和UITapGestureRecognizer做了一个简单的TicTacToe游戏。我使用了一个outlet集合数组,然后为每个添加了手势识别器。我理解为什么这个简单的跟随MVC并不重要,但我想正确地学习它。这些出口在技术上应该在视图中,我将UIGestureRecognizers添加到视图中的每个,目标对象是我的ViewController,而动作是我的ViewController中的一个函数。但是,当我这样做时,程序崩溃了。

此版本只为触摸的UIImage添加了一个x:

import UIKit

class TTTView: UIView {
    @IBOutlet weak var display: UILabel! {
        didSet {
            // add gesture recognizers to all spots on board
            for index in 0..<board.count {
                let gestureRecognizer = UITapGestureRecognizer(target: "ViewController", action: "spotPressed:")
                board[index].addGestureRecognizer(gestureRecognizer)
            }
        }
    }
    @IBOutlet var board: [UIImageView]!
}

和我的ViewController:

import UIKit

class ViewController: UIViewController {
    var x = UIImage(named: "x")
    // executed when spot is tapped
    func spotPressed(recognizer: UITapGestureRecognizer) {
        let fieldTapped = recognizer.view as UIImageView
        fieldTapped.image = x // implement with protocol

    }
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

    }
}

此代码因错误而崩溃:

2015-04-02 11:17:41.761 TTTv4[11273:356731] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<TTTv4.ViewController 0x7fc7d3f0e210> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key board.

任何人都可以帮我理解这里发生了什么吗?

这与链接的答案完全不同。这是在Swift中,错误来自于一个完全不同的函数,恰好试图访问不同的视图控制器。

0 个答案:

没有答案