2014-09-21 62 views
0

我一直在我的應用程序中的某個表格視圖中選擇問題。基本上,問題是我只能通過點擊作爲搜索結果的單元格才能繼續訪問另一個視圖控制器。出於某種原因,我無法在標準表格視圖中點按單元格。在表格視圖中點擊單元格不會執行任何操作

當我正常點擊一個單元時,沒有任何反應。但是,如果我使用搜索欄搜索單元格,則可以點擊單元格,並且它們將按照預期繼續到另一個視圖控制器。我無法弄清楚爲什麼。

這是我的代碼:

override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int { 
    // #warning Incomplete method implementation. 
    // Return the number of rows in the section. 

    if tableView == self.searchDisplayController?.searchResultsTableView { 
     return searchResults.count 
    } else { 
    if names.count == 0 { 
     if enterButtonTapped == false { 
      backgroundLabel.text = "Before you add any transactions, you must first set a budget. You can do this by tapping the 'Budget' tab." 
     } else { 
      backgroundLabel.text = "You haven't added any transactions yet. Tap the add button to add a new transaction." 
     } 
     backgroundLabel.frame = CGRectMake(0, 0, self.view.bounds.width, self.view.bounds.height) 
     backgroundLabel.numberOfLines = 0 
     backgroundLabel.textAlignment = NSTextAlignment.Center 
     backgroundLabel.sizeToFit() 
     backgroundLabel.hidden = false 
     backgroundLabel.textColor = UIColor.lightGrayColor() 
     clearButton.enabled = false 

     self.tableView.backgroundView = backgroundLabel 
     self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None 
     self.tableView.scrollEnabled = false 
     return 0 
    } else { 
     backgroundLabel.hidden = true 
     self.tableView.separatorStyle = UITableViewCellSeparatorStyle.SingleLine 
     self.tableView.scrollEnabled = true 
     clearButton.enabled = true 
     return names.count 
    } 
    } 
} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    var cell:CustomTransactionTableViewCell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as CustomTransactionTableViewCell 
    cell.selectionStyle = UITableViewCellSelectionStyle.None 

    if tableView == self.searchDisplayController?.searchResultsTableView { 
     cell.paymentNameLabel.text = (searchResults.objectAtIndex(indexPath.row)) as? String 
     //println(searchResults.objectAtIndex(indexPath.row)) 
     var indexValue = names.indexOfObject(searchResults.objectAtIndex(indexPath.row)) 
     cell.costLabel.text = (values.objectAtIndex(indexValue)) as? String 
     cell.dateLabel.text = (dates.objectAtIndex(indexValue)) as? String 

     if images.objectAtIndex(indexValue) as NSObject == 0 { 
      cell.paymentArrowImage.hidden = false 
      cell.creditArrowImage.hidden = true 
     } else if images.objectAtIndex(indexValue) as NSObject == 1 { 
      cell.creditArrowImage.hidden = false 
      cell.paymentArrowImage.hidden = true 
     } 
     //This works, unless there are two payments with the same name. To revert to previous version, remove tableView if statement and just keep code below the else. 
    } else { 
     cell.paymentNameLabel.text = (names.objectAtIndex(indexPath.row)) as? String 
     cell.costLabel.text = (values.objectAtIndex(indexPath.row)) as? String 
     cell.dateLabel.text = (dates.objectAtIndex(indexPath.row)) as? String 

     if images.objectAtIndex(indexPath.row) as NSObject == 0 { 
      cell.paymentArrowImage.hidden = false 
      cell.creditArrowImage.hidden = true 
     } else if images.objectAtIndex(indexPath.row) as NSObject == 1 { 
      cell.creditArrowImage.hidden = false 
      cell.paymentArrowImage.hidden = true 
     } 
    } 
    return cell 
} 

override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { 
    if tableView == self.searchDisplayController?.searchResultsTableView { 
     return false 
    } else { 
     return true 
    } 
} 

視圖控制器通過推SEGUE連接到故事板的單元格。

起初我懷疑這是此行(但它不是):

cell.selectionStyle = UITableViewCellSelectionStyle.None 

任何想法?

+0

您最有可能擁有一個或多個元素來覆蓋截取觸摸的大多數表視圖單元格。 – rebello95 2014-09-21 21:44:03

+0

確實存在單元格上的元素,但它們並未涵蓋整個事物,因此即使點擊空白區域也不起作用。另外,當然如果是這樣的話,這對搜索結果也是一個問題? – user3746428 2014-09-21 21:49:48

+0

看起來你有兩個表視圖 - 搜索表視圖和self.tableview。我假設這是因爲'cellForRowAtIndexPath'頂部的'if' - 但是你總是從'self.tableview'取出單元格。如果你有多個tableviews,你只需要傳遞'tableview'到'dequeueReusableCell ...'。 – Paulw11 2014-09-21 21:51:29

回答

0

這個問題其實很簡單。我只需要將表格視圖屬性中的選擇設置從「無選擇」更改爲「單選」。

相關問題