У меня есть шахматная доска на моем контроллере.Я хочу получить контроллер пространства зрения, шахматная доска которого не занята.
в следующем коде я упомянул три класса 1 - класс контроллера представления 2 - класс игры в шахматы 3 - класс chessBoard
В классе chessBoard, когда я вызываю метод getFrames.он показывает «фатальную ошибку», поскольку «SPACE_FROM_TOP_EDGE» и «TILE_SIZE» равны nil.
как получить «SPACE_FROM_TOP_EDGE» и «TILE_SIZE» для класса «view controller» в классе «chessBoard»?
class ViewController: UIViewController {
var SPACE_FROM_LEFT_EDGE: CGFloat!
var SPACE_FROM_TOP_EDGE: CGFloat!
var TILE_SIZE: CGFloat!
override func viewDidLoad() {
super.viewDidLoad()
TILE_SIZE = self.view.frame.size.width / 8
SPACE_FROM_TOP_EDGE = self.view.frame.size.height - (self.view.frame.size.width / 2)
chessPiece = []
myChessGame = ChessGame.init(viewController: self)
}
class ChessGame {
var theChessBoard: chessBoard
init(viewController: ViewController) {
theChessBoard = chessBoard.init(viewController: viewController)
}
}
class chessBoard {
var board: [[Piece]]
var vc: ViewController
var ROWS = 8
var COLS = 8
var whiteKing: King!
var blackKing: King!
static func getFrames(forRow row: Int, forColoumn col: Int) -> CGRect{
let vc = ViewController()
print(vc.SPACE_FROM_TOP_EDGE)
print(vc.TILE_SIZE)
let x = (CGFloat(col) * 40.0)
let y = vc.SPACE_FROM_TOP_EDGE! + (CGFloat(row) * 40.0)
return CGRect(origin: CGPoint(x: x, y: y), size: CGSize(width: 40.0, height: 40.0))
}
init(viewController: ViewController) {
vc = viewController
let oneRowOfBoard = Array(repeating: Dummy(), count: COLS)
board = Array(repeating: oneRowOfBoard, count: ROWS)
board[row][col] = Rook(frame: chessBoard.getFrames(forRow: row, forColoumn: col), color: #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1), vc: vc)
}
}
error message - "Fatal error: Unexpectedly found nil while unwrapping an Optional value"