gpt4 book ai didi

ios - 如何让DetailView通过indexPath改变数据

转载 作者:行者123 更新时间:2023-11-28 15:43:13 24 4
gpt4 key购买 nike

我目前正在开发一个 Master-DetailView 应用程序,但我一直在研究如何更改数据....

我看到了一个关于如何做到这一点的很棒的教程:

Tutorial

但是那个人使用的是空白 ViewController 而我使用的是带有静态单元格的 TableViewController,所以它不起作用。

我想像这样手动放数据

var Label1Data = ["You Tapped Cell 1,You Tapped Cell 2,You Tapped Cell 3"]

如果我按下第一个单元格,它将通过索引路径显示在 DetailView 中,第一个数据将显示在该标签中...我知道在这里使用静态单元格并不理想,但我确实想在设计上明智地使用它们.

如果最后有人能告诉我如何像我上面所说的那样成功地放置数据以及教程是如何做到的,那就太好了。

MasterViewController代码:

import UIKit
import AVFoundation


class BarsViewController: UITableViewController,UISearchResultsUpdating,UISearchBarDelegate,UISearchDisplayDelegate,UITabBarControllerDelegate{

@IBOutlet var tableViewController: UITableView!
var audioPlayer = AVAudioPlayer()
var sel_val : String?

// TableView Data :

struct User {
var name: String
var streetName: String
var image: UIImage?
}

var allUsers: [User]!
var filteredUsers: [User]!

func createUsers(names: [String], streets: [String], images: [UIImage?]) -> [User] {
var users = [User]()
guard names.count == streets.count && names.count == images.count else { return users }
for (index, name) in names.enumerated() {
let user = User(name: name, streetName: streets[index], image: images[index])
users.append(user)
}
return users
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

if tableView == self.tableView {

return self.names.count

} else {
return self.filteredUsers.count
}

}



override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
let cell = self.tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomCell

let user:User!

if tableView == self.tableView {
user = allUsers[indexPath.row]
} else {
user = filteredUsers[indexPath.row]
}
cell.photo.image = user.image
cell.name.text = user.name
cell.streetName.text = user.streetName

return cell
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){


let object = self.storyboard?.instantiateViewController(withIdentifier: "BarProfileTableViewController") as! BarsProfile
let user:User!
if tableView == self.tableView {
user = allUsers[indexPath.row]
} else {
user = filteredUsers[indexPath.row]
}

print("username : \(user.name)")
print("streetName : \(user.streetName)")

MyIndex = indexPath.row

object.barImage = user.image!
object.barName = user.name
object.streetName = user.streetName



self.navigationController?.pushViewController(object, animated: true)

}

DetailView 的代码:

import UIKit
import AVFoundation
import MapKit

class BarsProfile: UITableViewController,MKMapViewDelegate {


@IBOutlet var Distance: UILabel!
@IBOutlet var headerImage: UIImageView!
@IBOutlet var OnlineMenu: UIButton!
@IBOutlet var Address: UILabel!
@IBOutlet var ProfileMapView: MKMapView!
@IBOutlet var BarNameLBL: UILabel!
@IBOutlet var streetNameLBL: UILabel!
@IBOutlet var MusicLabel: UILabel!
@IBOutlet var KindOfBarCell: UITableViewCell!



var barName = String()
var barImage = UIImage()
var streetName = String()


override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)

BarNameLBL.text = barName
streetNameLBL.text = streetName
navigationItem.title = barName


}

它看起来像什么:(红线是我想手动放入数据的标签)

enter image description here

最佳答案

您不能将 TableViewController 用于您的目的。相反,您可以使用带有标签和文本字段的普通 ViewController

enter image description here

在你上面的图片中,你可以使用一个简单的 label width = 1color = lightGrey 这样你就可以得到与 TableView 中相同的分隔线。

关于ios - 如何让DetailView通过indexPath改变数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43449340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com