2014-06-24 14 views
8

से ऊपर नहीं मैं UITableView के viewForHeaderInSection विधि का उपयोग कर रहा हूँ, लेकिन मैं तय कर लिया है कि दृश्य डिफ़ॉल्ट, जहां यह तो जैसे शुरू होता है से सेल पर एक कम अस्पष्टता के साथ अच्छे llook हैं दोषी:UITableViewHeaderView कक्ष पर लटका,

how it defaults

मैं इसे इस तरह डिफ़ॉल्ट, जैसे कि उपयोगकर्ता पहले से ही नीचे स्क्रॉल किया था चाहते हैं (ध्यान दें, मैं सभी कोशिकाओं के लिए इस चाहते हैं, न सिर्फ दृश्य के शीर्ष पर एक वर्तमान में)।

how i'd like it

मैं सिर्फ सेल के एक subview के रूप में देखें जोड़ सकता है, सिवाय इसके कि मैं इसे कार्यक्षमता जहां, अगर सेल शीर्ष सेल है, शीर्ष लेख दृश्य स्क्रीन के ऊपर रहता है बनाए रखना चाहते हैं। शायद ऐसा करने का उचित तरीका हेडर्व्यू नहीं है, और यदि कोई सेल शीर्ष सेल की गणना करता है जहां सेल पर दृश्य की उत्पत्ति है। हालांकि यह इसके बारे में जाने का संभावित महंगा तरीका है, तो यह हो सकता है केवल/सर्वोत्तम

धन्यवाद।

पीएसआई इसे तेजी से करने की तलाश में हूं, लेकिन उद्देश्य सी करेगा। धन्यवाद फिर से

+0

क्या किसी ने इसे स्वीकार किया है? मैं अभी भी इसके साथ संघर्ष कर रहा हूं – Ryan

+0

सभी कोशिकाओं के लिए आपका क्या मतलब है? आप सभी कोशिकाओं के लिए पारदर्शी शीर्षलेख क्यों चाहते हैं? ViewForHeaderInSection से कम अस्पष्टता के साथ एक दृश्य लौटने में क्या गलत है? और व्यवहार के बारे में क्या है जैसे उपयोगकर्ता पहले ही स्क्रॉल कर चुका था, आप पुन: पेश करना चाहते हैं? क्या यह मुझे या आपकी व्याख्या है? lol – believesInSanta

+0

ऐसा लगता है कि आप सिर्फ एक सादे UITableViewStyle शीर्षलेख चाहते हैं जो पारदर्शी है? – believesInSanta

उत्तर

3

क्या आप यह चाहते हैं?

import UIKit 

class ViewController: UITableViewController { 
    var data = [[String]]() 
    var headerOrigins = [CGPoint]() 
    var floatingHeaders = [UIView]() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     data = [["One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eigth", "Nine", "Ten"], ["One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eigth", "Nine", "Ten"], ["One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eigth", "Nine", "Ten"]] 

     tableView.dataSource = self 
     tableView.delegate = self 

     for i in 0..<data.count { 
      headerOrigins += tableView(tableView, cellForRowAtIndexPath: NSIndexPath(forRow: 0, inSection: i)).frame.origin 

      let floatingHeader = UIView(frame: CGRectMake(0, headerOrigins[i].y, tableView.frame.size.width, 44)) 
      floatingHeader.backgroundColor = UIColor.redColor() 
      floatingHeader.alpha = 0.5 

      let label = UILabel(frame: CGRectMake(100, 10, 100, 30)) 
      label.text = "Header \(i)" 
      floatingHeader.addSubview(label) 

      tableView.addSubview(floatingHeader) 

      floatingHeaders += floatingHeader 
     } 

    } 

    override func numberOfSectionsInTableView(tableView: UITableView!) -> Int { 
     return data.count 
    } 

    override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int { 
     return data[section].count 
    } 

    override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! { 
     let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell 
     cell.textLabel.text = data[indexPath.section][indexPath.row] 

     return cell 
    } 

    override func scrollViewDidScroll(scrollView: UIScrollView!) { 
     var tableTop = tableView.bounds.origin.y + tableView.scrollIndicatorInsets.top 

     if tableTop < 0 { 
      floatingHeaders[0].frame.origin.y = 0 
     } else { 
      for i in 0..<data.count { 
       if tableTop > headerOrigins[i].y { 
        floatingHeaders[i].frame.origin.y = tableTop 
       } else if tableTop < headerOrigins[i].y { 
        floatingHeaders[i].frame.origin.y = headerOrigins[i].y 
       } 

      var j = i 
      while j > 0 { 
       if (CGRectGetMaxY(floatingHeaders[j-1].frame) > floatingHeaders[j].frame.origin.y) { 
        floatingHeaders[j-1].frame.origin.y = floatingHeaders[j].frame.origin.y - floatingHeaders[j].frame.size.height 
       } 
       j-- 
      } 
     } 
    } 
} 
+0

यह कोड के साथ संकलित और पालन नहीं करता है, मुझे नहीं लगता कि यह वैसे ही डिफ़ॉल्ट होगा जिस तरह से मैं उम्मीद कर रहा था। आपके प्रयास के लिए धन्यवाद हालांकि – Ryan

+0

@Ryan आपको क्या त्रुटि मिलती है? –

+0

@ रयान डॉन मिनी-मार्कडाउन! इस लिंक को जांचें: http://bit.ly/1spDAYP –

संबंधित मुद्दे