【发布时间】:2017-09-12 22:40:42
【问题描述】:
我目前正在开发一个 Master-DetailView 应用程序,但我不知道如何更改数据......
我看到了一个很棒的教程:
但是这家伙使用的是空白的 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
}
它的样子:(红线是我想手动放入数据的标签)
【问题讨论】:
-
问题无法理解
-
本教程的作用只是在 TableViewController 中使用静态单元格
-
我尝试了他在教程中所做的。我的代码太乱了,真的可以理解
-
只有你给我代码我才能帮你
-
好吧,它很复杂,希望你能理解..
标签: ios swift uitableview master-detail