2017-04-17 66 views
0

我目前工作的一個主的DetailView應用程序和我卡在如何使數據變化作出的DetailView變化數據....如何通過indexPath

我看到關於如何將偉大的教程做到這一點:

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

+0

問題是不可理解的 –

+0

教程做什麼,但只是在TableViewController靜態單元格 –

+0

你到目前爲止嘗試過什麼? –

回答

1

您無法使用TableViewController您的目的。相反,您可以使用帶標籤和文本字段的正常ViewController

enter image description here

在你的上面的圖片,你可以使用width = 1簡單labelcolor = lightGrey,這樣就可以得到相同的分隔線作爲實現代碼如下。

+0

感謝四改變爲viewcontrolller,現在一切都很好 –

+0

@NewbieQuestions高興它幫助:) –

相關問題