2017-09-27 48 views
0

我需要的幫助,請參見本類迅速,的tableView selectedTypes按鈕

import UIKit 

protocol TypesTableViewControllerDelegate: class { 
    func typesController(controller: TypesTableViewController, didSelectTypes types: [String]) 
} 

class TypesTableViewController: UITableViewController { 

    let possibleTypesDictionary = ["bakery":"Bakery", "bar":"Bar", "cafe":"Cafe", "grocery_or_supermarket":"Supermarket", "restaurant":"Restaurant"] 
    var selectedTypes: [String]! 
    weak var delegate: TypesTableViewControllerDelegate! 
    var sortedKeys: [String] { 
    return possibleTypesDictionary.keys.sort() 
    } 

    // MARK: - Actions 
    @IBAction func donePressed(sender: AnyObject) { 
    delegate?.typesController(self, didSelectTypes: selectedTypes) 
    } 

    // MARK: - Table view data source 
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return possibleTypesDictionary.count 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("TypeCell", forIndexPath: indexPath) 
    let key = sortedKeys[indexPath.row] 
    let type = possibleTypesDictionary[key]! 
    cell.textLabel?.text = type 
    cell.imageView?.image = UIImage(named: key) 
    cell.accessoryType = (selectedTypes!).contains(key) ? .Checkmark : .None 
    return cell 
    } 

    // MARK: - Table view delegate 
    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    tableView.deselectRowAtIndexPath(indexPath, animated: true) 
    let key = sortedKeys[indexPath.row] 
    if (selectedTypes!).contains(key) { 
     selectedTypes = selectedTypes.filter({$0 != key}) 
    } else { 
     selectedTypes.append(key) 
    } 

    tableView.reloadData() 
    } 
} 

在這裏,用戶可以挖掘的tableView的細胞,使他喜歡類型的下一個的viewController用於搜索,現在我需要構建一個能夠做同樣事情的類,但是沒有一個tableview,而只有一個視圖中只有6個按鈕,用戶可以點擊(所以viewController只有6個不同的按鈕可以點擊)。問題是我不知道如何傳遞給下一個viewController哪些按鈕被按下,哪些不按鈕,我該如何構建這個類?

這裏是在其他類需要知道已經按下了哪個按鈕

func fetchNearbyPlaces(coordinate: CLLocationCoordinate2D) { 

     mapView.clear() 

     dataProvider.fetchPlacesNearCoordinate(coordinate, radius:searchRadius, types: searchedTypes) { places in 
      for place: GooglePlace in places { 

       let marker = PlaceMarker(place: place) 

       marker.map = self.mapView 

功能在哪裏「類型:serchedTypes」

回答

0

你想要做的是叫什麼代表團這裏你如何做到這一點:

  1. 做一個協議這樣的E:

    protocol TransferProtocol : class 
    { 
        func transferData(types:[String]) 
    } 
    
  2. 使與符合到該協議的按鈕視圖控制器,我喜歡通過添加擴展到我的類像這樣做:

    extension ButtonsViewController:TransferProtocol{ 
        func transferData(types:[String]){ 
        //Do whatever you want here 
        } 
    } 
    
  3. 在聲明一個變量您的桌面視圖控制器類與您創建的協議類型,這稱爲代表

    weak var transferDelegate:TransferProtocol? 
    
  4. 之前Segue公司您要設置視圖控制器爲委託按鈕 - 視圖 - 控制器剛剛創建像這樣:

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
        let vc = segue.destination as? ButtonsViewController 
        transferDelegate = vc 
        vc?.transferData(types: selected) 
    
    } 
    

如果做得正確,你應該能夠工作與您在Table View Controller中構建的數組(TypeTableViewController)