【问题标题】:How to make DetailView change data by indexPath如何通过 indexPath 使 DetailView 更改数据
【发布时间】:2017-09-12 22:40:42
【问题描述】:

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


    }

它的样子:(红线是我想手动放入数据的标签)

【问题讨论】:

  • 问题无法理解
  • 本教程的作用只是在 TableViewController 中使用静态单元格
  • 我尝试了他在教程中所做的。我的代码太乱了,真的可以理解
  • 只有你给我代码我才能帮你
  • 好吧,它很复杂,希望你能理解..

标签: ios swift uitableview master-detail


【解决方案1】:

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

在您的上图中,您可以使用width = 1color = lightGrey 的简单label,这样您就可以获得与tableview 中相同的分隔线。

【讨论】:

  • 感谢 iv 已更改为 viewcontrolller,现在一切正常
  • @NewbieQuestions 很高兴它有帮助:)
猜你喜欢
  • 1970-01-01
  • 2011-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多