我是swift的初学者,但我确实在HTML,CSS和Java方面有着不错的背景。我把这个帐号简单地问了这个问题,所以我会直截了当地说。
我真的很享受快乐,但我真的花了一周时间一遍又一遍地写这个相同的代码,回顾无数的教程,书籍,指南等等。无济于事;而且我不会撒谎,我总是厌倦了在我的编译器中看到10多个错误堆积起来,因为我一直试图解决这个问题。
我有一个ViewController,我有一个TableViewController - ViewController是我的主屏幕。在所说的viewController上,我有两个按钮,一个是BuildingItems,另一个是BuildingBlocks。两者都是segues。
在我的TableViewController上,我有buildBlocks和buildItems,两者都定义了它们的数组。
我试图做的,取决于用户选择的按钮,我希望那时是用于填充我的tableview的数据。我可以使用普通的cell.textLabel?.text = arrayNameHere [indexPath.row]来专门填充tableview,但显然这并不能解决我的问题。
我希望你能在这里帮助我。我为蹩脚的语法和格式道歉,我已经花了4-5个小时,这一周过去一周试图让这个工作,我结束了生气,并删除我的整个项目三个不同倍。我将在下面提供代码。再次,原谅格式化。我不知道为什么我似乎无法迅速解决问题,我一直在尝试代表的每一个变体试图通过一些让它起作用的东西,但没有任何工作。
ViewController:
@IBAction func BuildItems (_sender: Any) {
}
@IBAction func BuildBlocks (_sender: Any) {
}
在TableViewController中:
let buildItems = ["these are all my", "arrays for this"]
let buildBlocks = ["same thing here","just saving time"]
class TableViewController: UITableViewController {
var myIndex = 0
override func tableView(_ tableView: UITableView, numberOfRowsInSection: Int) -> Int {
return buildItems.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell" for: indexPath)
cell.textLabel?.text = buildItems[indexPath.row]
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
myIndex = indexPath.row
}
}
答案 0 :(得分:0)
在tableView控制器中创建bool var可能和helpArray
var dataArray:[String] = []
var isBuildItem:Bool = false
在你的第一个控制器中实现prepareForSegue方法,如下所示:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let vc = segue.destination as? TableViewController {
//set true or false it depends of which button you click
vc.isBuildItem = //true or false
}
}
然后在TableViewController中的viewDidLoad中检查bool变量
if(isBuildItem:Bool){
dataArray = buildItems
}
else{
dataArray = buildBlocks
}
在所有tableView委托方法中,使用dataArray
更改buildItems数组答案 1 :(得分:0)
:
import UIKit
var segueName = ""
class ViewController: UIViewController {
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.
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
segueName = segue.identifier!
print(segueName)
}
}
TableViewController:
import UIKit
class TableViewController: UITableViewController
{
let animals = ["Cat","Dog","Mouse"]
let colors = ["White","Blue","Red"]
var arrayResult = [""]
override func viewDidLoad()
{
super.viewDidLoad()
if segueName == "seguebuttonA"
{
arrayResult = animals
}
else if segueName == "seguebuttonB"
{
arrayResult = colors
}
}
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int
{
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
// #warning Incomplete implementation, return the number of rows
return arrayResult.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "cellTest", for: indexPath) as! TableViewCell
// Configure the cell...
cell.titleLabel.text = arrayResult[indexPath.row]
return cell
}
}
完整的例子在下面的链接中,我希望我有所帮助,如果您有任何问题请告诉我。 https://github.com/cwilliams26/viewSegueTabelview/tree/master
答案 2 :(得分:0)
您只需要1个segue:从ViewController
到TableViewController
。
在你的ViewController
创建一个按下按钮的变量:
var category = ""
按下按钮时更改值,然后按segue:
@IBAction func BuildItems (_sender: Any) {
category = "BuildItems"
self.performSegue(withIdentifier: "segue", sender: self)
}
@IBAction func BuildBlocks (_sender: Any) {
category = "BuildBlocks"
self.performSegue(withIdentifier: "segue", sender: self)
}
然后在prepare
:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "segue" {
let vc = segue.destination as! TableViewController
// Assuming you created a variable called sentCategory in the TableViewController
vc.sentCategory = category
}
}
在TableViewController
中创建一个空数组:
let data = [String]()
在viewDidLoad
:
if sentCategory == "BuildItems" {
data = buildItems
} else {
data = buildBlocks
}
使用TableView
变量填充data
。
一对评论:
prepare
函数传递数据,如上所示。