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

标签 ios swift uitableview master-detail

我目前正在开发一个 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/

相关文章:

swift - Swift 中的 UILabel 根据行数而变化

ios - 如何在 iOS 11 中读取收到的短信

ios - 在 Firebase iOS 中刷新身份验证 token 时出错

ios - ViewController 异常改变大小

ios - CustomTableCell 中的 UICollectionView

ios - 如何让 VoiceOver 将 UITableView 视为单个可访问性元素?

iphone - iOS view.hidden = NO 并不总是有效

objective-c - 如何在 iOS 中使用 Aviary SDK

ios - NSSplitView 建议的分割分隔线没有放置在正确的位置?

ios - 根据另一个 View Controller 更改 viewController BG 颜色