Ios 我想在Swift单视图应用程序中将一个2d值数组传递给第二个视图
我正在尝试使用Xcode创建一个基本的数独解算器。目前,我有一个9x9的文本字段显示,它被转换成二维数组,并通过我已经制作的解算器。我目前的困境是,我想将已解决的数组传递到第二个视图,并将其打印成一个数独板,但我不确定如何1.)正确转换到第二个视图,以及2.)如何将数组与一起打印 我还不能添加图像,但我的故事板只包含两个视图。它们当前未连接。第一个是文本字段的9x9显示,下面有一个按钮,没有相关的操作。第二个是9x9的标签显示,其他什么都没有 以下是第一个视图的全部代码:Ios 我想在Swift单视图应用程序中将一个2d值数组传递给第二个视图,ios,arrays,swift,uitextfield,uilabel,Ios,Arrays,Swift,Uitextfield,Uilabel,我正在尝试使用Xcode创建一个基本的数独解算器。目前,我有一个9x9的文本字段显示,它被转换成二维数组,并通过我已经制作的解算器。我目前的困境是,我想将已解决的数组传递到第二个视图,并将其打印成一个数独板,但我不确定如何1.)正确转换到第二个视图,以及2.)如何将数组与一起打印 我还不能添加图像,但我的故事板只包含两个视图。它们当前未连接。第一个是文本字段的9x9显示,下面有一个按钮,没有相关的操作。第二个是9x9的标签显示,其他什么都没有 以下是第一个视图的全部代码: import UIKi
import UIKit
class ViewController: UIViewController {
@IBOutlet var row1: [UITextField]!
@IBOutlet var row2: [UITextField]!
@IBOutlet var row3: [UITextField]!
@IBOutlet var row4: [UITextField]!
@IBOutlet var row5: [UITextField]!
@IBOutlet var row6: [UITextField]!
@IBOutlet var row7: [UITextField]!
@IBOutlet var row8: [UITextField]!
@IBOutlet var row9: [UITextField]!
@IBAction func executeSolver() {
var board = [[Int]](count: 9, repeatedValue: [Int](count: 9, repeatedValue: 0))
var board2 = [row1, row2, row3, row4, row5, row6, row7, row8, row9]
for var row = 0; row < 9; ++row{
var rowE = board2[row];
for var col = 0; col < 9; ++col{
var val = rowE[col].text;
if var intVal = val.toInt() {
if intVal > 0 && intVal < 10 {
board[row][col] = intVal;
}
}
}
}
var ss = Solver(givenBoard: board)
board = ss.getBoard()
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
导入UIKit
类ViewController:UIViewController{
@IBOutlet变量行1:[UITextField]!
@IBOutlet变量行2:[UITextField]!
@IBOutlet变量行3:[UITextField]!
@IBOutlet变量行4:[UITextField]!
@IBOutlet变量行5:[UITextField]!
@IBOutlet变量行6:[UITextField]!
@IBOutlet变量行7:[UITextField]!
@IBOutlet变量行8:[UITextField]!
@IBOutlet变量行9:[UITextField]!
@iAction func executeSolver(){
var board=[[Int]](计数:9,repeatedValue:[Int](计数:9,repeatedValue:0))
var board2=[第1行、第2行、第3行、第4行、第5行、第6行、第7行、第8行、第9行]
对于var行=0;行<9;++行{
var rowE=board2[行];
对于变量col=0;col<9;++col{
var val=rowE[col]。文本;
如果var intVal=val.toInt(){
如果intVal>0&&intVal<10{
板[行][col]=intVal;
}
}
}
}
var ss=求解器(给定板:板)
board=ss.getBoard()
}
重写func viewDidLoad(){
super.viewDidLoad()
//加载视图后,通常从nib执行任何其他设置。
}
重写函数didReceiveMemoryWarning(){
超级。我收到了记忆警告()
//处置所有可以重新创建的资源。
}
}
< /代码> 您可以考虑使用自定义2D结构。
你为什么要用这个?它为您提供订阅。
此外,如果您的标签具有相同的特征,则最好使用插座阵列并使用标签来标识每个插座,而不是逐个创建插座
struct Array2D<T> {
let columns: Int
let rows: Int
private var array: Array<T?>
init(columns: Int, rows: Int) {
self.columns = columns
self.rows = rows
array = Array<T?>(count: rows*columns, repeatedValue: nil)
}
subscript(column: Int, row: Int) -> T? {
get {
return array[row*columns + column]
}
set {
array[row*columns + column] = newValue
}
}
}
struct Array2D{
let列:Int
让行:Int
私有变量数组:数组
init(列:Int,行:Int){
self.columns=列
self.rows=行
数组=数组(计数:行*列,重复值:零)
}
下标(列:Int,行:Int)->T{
得到{
返回数组[行*列+列]
}
设置{
数组[行*列+列]=newValue
}
}
}
本质上,我相信您是在问:如何在情节提要视图控制器之间传递数据。您能用segue连接两个视图控制器吗?