Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 快速创建多个文本字段的网格?_Swift_User Interface_Uiviewcontroller - Fatal编程技术网

Swift 快速创建多个文本字段的网格?

Swift 快速创建多个文本字段的网格?,swift,user-interface,uiviewcontroller,Swift,User Interface,Uiviewcontroller,对swift来说是相当新的,刚刚进入设计/应用程序制作方面。因此,我想为数独解题应用程序创建一个9X9的文本字段网格,其中每个文本字段将接收一个数字,并将值分配给我创建的结构。我很难找到正确的方法来做这件事。我觉得我可以只制作81个文本框,然后分别分配每个文本框,但我觉得作为一名程序员,这样做肯定是错误的。谁能给我指一下正确的方向吗 谢谢 UICollectionView是一个不错的选择 如果您想要一个顶部有一个标题单元格的9*9网格,那么类似这样的东西可以工作: func numberOfSe

对swift来说是相当新的,刚刚进入设计/应用程序制作方面。因此,我想为数独解题应用程序创建一个9X9的文本字段网格,其中每个文本字段将接收一个数字,并将值分配给我创建的结构。我很难找到正确的方法来做这件事。我觉得我可以只制作81个文本框,然后分别分配每个文本框,但我觉得作为一名程序员,这样做肯定是错误的。谁能给我指一下正确的方向吗


谢谢

UICollectionView是一个不错的选择

如果您想要一个顶部有一个标题单元格的9*9网格,那么类似这样的东西可以工作:

func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
    return 1
}

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 82
}

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    if indexPath.row == 0
    {
        return CGSize(width: screenWidth, height: screenWidth/3)
    }
    return CGSize(width: screenWidth/9, height: screenWidth/9);

}
这给了你:

使用嵌入式UICollectionView完成viewController:

import UIKit

class ViewController: UIViewController, UICollectionViewDelegateFlowLayout,   UICollectionViewDataSource {


var collectionView : UICollectionView?  // Optional
var screenSize : CGRect!
var screenWidth : CGFloat!
var screenHeight : CGFloat!

override func viewDidLoad() {
    super.viewDidLoad()

    screenSize = self.view.frame

    screenWidth = screenSize.width
    screenHeight = screenSize.height

    // Do any additional setup after loading the view, typically from a nib.
    let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
    layout.sectionInset = UIEdgeInsets(top: 20, left: 0, bottom: 10, right: 0)
    layout.itemSize = CGSize(width: screenWidth/3, height: screenWidth/3)
    layout.minimumInteritemSpacing = 0
    layout.minimumLineSpacing = 0
    collectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
    print(collectionView?.frame.width)
    collectionView!.dataSource = self
    collectionView!.delegate = self
    collectionView!.registerClass(CollectionViewCell.self, forCellWithReuseIdentifier: "CollectionViewCell")
    collectionView!.backgroundColor = UIColor.greenColor()
    self.view.addSubview(collectionView!)
}

func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
    return 1
}

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 82
}

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    if indexPath.row == 0
    {
        return CGSize(width: screenWidth, height: screenWidth/3)
    }
    return CGSize(width: screenWidth/9, height: screenWidth/9);

}

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("CollectionViewCell", forIndexPath: indexPath) as! CollectionViewCell
    if indexPath.row == 0
    {
        cell.backgroundColor = UIColor.lightGrayColor()

    }else
    {
        cell.backgroundColor = UIColor.whiteColor()
    }
    cell.layer.borderColor = UIColor.blackColor().CGColor
    cell.layer.borderWidth = 0.5

    //cell.textLabel?.text = "\(indexPath.section):\(indexPath.row)"
    return cell
}

}

UICollectionView是一个不错的选择

如果您想要一个顶部有一个标题单元格的9*9网格,那么类似这样的东西可以工作:

func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
    return 1
}

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 82
}

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    if indexPath.row == 0
    {
        return CGSize(width: screenWidth, height: screenWidth/3)
    }
    return CGSize(width: screenWidth/9, height: screenWidth/9);

}
这给了你:

使用嵌入式UICollectionView完成viewController:

import UIKit

class ViewController: UIViewController, UICollectionViewDelegateFlowLayout,   UICollectionViewDataSource {


var collectionView : UICollectionView?  // Optional
var screenSize : CGRect!
var screenWidth : CGFloat!
var screenHeight : CGFloat!

override func viewDidLoad() {
    super.viewDidLoad()

    screenSize = self.view.frame

    screenWidth = screenSize.width
    screenHeight = screenSize.height

    // Do any additional setup after loading the view, typically from a nib.
    let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
    layout.sectionInset = UIEdgeInsets(top: 20, left: 0, bottom: 10, right: 0)
    layout.itemSize = CGSize(width: screenWidth/3, height: screenWidth/3)
    layout.minimumInteritemSpacing = 0
    layout.minimumLineSpacing = 0
    collectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
    print(collectionView?.frame.width)
    collectionView!.dataSource = self
    collectionView!.delegate = self
    collectionView!.registerClass(CollectionViewCell.self, forCellWithReuseIdentifier: "CollectionViewCell")
    collectionView!.backgroundColor = UIColor.greenColor()
    self.view.addSubview(collectionView!)
}

func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
    return 1
}

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 82
}

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    if indexPath.row == 0
    {
        return CGSize(width: screenWidth, height: screenWidth/3)
    }
    return CGSize(width: screenWidth/9, height: screenWidth/9);

}

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("CollectionViewCell", forIndexPath: indexPath) as! CollectionViewCell
    if indexPath.row == 0
    {
        cell.backgroundColor = UIColor.lightGrayColor()

    }else
    {
        cell.backgroundColor = UIColor.whiteColor()
    }
    cell.layer.borderColor = UIColor.blackColor().CGColor
    cell.layer.borderWidth = 0.5

    //cell.textLabel?.text = "\(indexPath.section):\(indexPath.row)"
    return cell
}

}

我想你可以使用UICollectionView来创建表格、日历等。我想你可以使用UICollectionView来创建表格、日历等。非常感谢!你是如何让细胞出现的?我的只是一个带有任何颜色的空白屏幕,我设置了集合视图。我添加了带有嵌入式集合视图的视图控制器的完整代码,还展示了如何注册自定义集合视图单元格。我想你会对此有一些非常特别的数独想法。非常感谢!你是如何让细胞出现的?我的只是一个空白屏幕,无论我将集合视图设置为什么颜色。我已经为一个带有嵌入式集合视图的视图控制器添加了完整的代码,还展示了如何注册自定义集合视图单元格。我想你在这方面会有一些非常特别的数独想法。