2017-01-02 82 views
-1

每個標題的單獨章節; 每個欄目標題下應該是SubHeadings,副標題應該是Drugs。UITable視圖:製作單獨的章節並添加標題和字幕

我可以正確得到numberOfSections,我怎樣才能設置正確的部分標題和調用這個項目的標題和副標題?

class FinalPageViewController: UITableViewController { 

var top: [String: AnyObject]! 
var subheading: [String: AnyObject]! 
var drugs:[String: AnyObject]! 
let CellIdentifier = "Cell Identifier" 
var sectioHeader = [String]() 


var subheads: [AnyObject] { 
    //Passing the key Top(Array) here and defining it from plist 
    if let subheads = top["Subhead"] as? [AnyObject] { 
     return subheads 
    } else { 
     return [AnyObject]() 
    } 
} 
var drug: [AnyObject] { 
    //Passing the key Top(Array) here and defining it from plist 
    if let drug = top["Drugs"] as? [AnyObject] { 
     return drug 
    } else { 
     return [AnyObject]() 
    } 
} 
var heads: [AnyObject] { 
    //Passing the key Top(Array) here and defining it from plist 
    if let heads = top["Head"] as? [AnyObject] { 
     return heads 
    } else { 
     return [AnyObject]() 
    } 
} 
override func viewDidLoad() { 
    super.viewDidLoad() 
    //Assigning the key Top here to title 
    if let name = top["Top"] as? String { 
     title = name 

    } 
    tableView.register(UITableViewCell.classForCoder(), forCellReuseIdentifier: CellIdentifier) 
} 



override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

override func numberOfSections(in tableView: UITableView) -> Int { 
    return heads.count 
} 

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    return subheads.count 
} 

override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 
    let titleName = title 
if let titleHeader = heads as? [String: AnyObject], let titled = titleHeader["Headings"] as? String 
{ 
    titleName.text = titled 
} 
return titleName 
} 

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    // Dequeue Resuable Cell 
    let cell = tableView.dequeueReusableCell(withIdentifier: CellIdentifier, for: indexPath) 

    if let head = heads[(indexPath as NSIndexPath).row] as? [String: AnyObject], let title = head["Headings"] as? String { 
     //Topics is the Key inside array top 
     // Configure Cell 
     cell.textLabel?.text = title 
    } 

    return cell; 
} 
} 

plist文件有點大,像這樣。

<plist version="1.0"> 
<array> 
<dict> 
    <key>Chap</key> 
    <string>ANS</string> 
    <key>Top</key> 
    <array> 
     <dict> 
      <key>Topics</key> 
      <string>Cholinergics</string> 
      <key>Head</key> 
      <array> 
       <dict> 
        <key>Headings</key> 
        <string>Directly acting</string> 
        <key>Subhead</key> 
        <array> 
         <dict> 
          <key>Subheadings</key> 
          <string>Choline esters </string> 
          <key>Drugs</key> 
          <array> 
           <string>Acetylcholine</string> 
           <string>Bethanechol</string> 
           <string>Carbhachol</string> 
           <string>Methacholine</string> 
          </array> 
         </dict> 
         <dict> 
          <key>Subheadings</key> 
          <string>Natural Alkaloids</string> 
          <key>Drugs</key> 
          <array> 
           <string>Nicotine</string> 
           <string>Pilocarpine</string> 
           <string>Muscarine</string> 
           <string>Arecoline</string> 
          </array> 
         </dict> 
        </array> 
       </dict> 
       <dict> 
        <key>Headings</key> 
        <string>Indirectly acting</string> 
        <key>Subhead</key> 
        <array> 
         <dict> 
          <key>Subheadings</key> 
          <string>Reversible Carbamates</string> 
          <key>Drugs</key> 
          <array> 
           <string>Neostigmine</string> 
           <string>Edrophonium</string> 
           <string>Physostigmine</string> 
           <string>Pyridostigmine</string> 
           <string>Ambenonium</string> 
           <string>Galantamine</string> 
           <string>Donepezil</string> 
           <string>Rivastigmine</string> 
          </array> 
         </dict> 
         <dict> 
          <key>Subheadings</key> 
          <string>Reversible Acridine</string> 
          <key>Drugs</key> 
          <array> 
           <string>Tacrine</string> 
          </array> 
         </dict> 
         <dict> 
          <key>Subheadings</key> 
          <string>Irreversible Carbamates</string> 
          <key>Drugs</key> 
          <array> 
           <string>Propoxur</string> 
          </array> 
         </dict> 
         <dict> 
          <key>Subheadings</key> 
          <string>Irreversible organophosphates</string> 
          <key>Drugs</key> 
          <array> 
           <string>Echothiophate</string> 
           <string>Parathion</string> 
           <string>Malathion</string> 
           <string>Dyflos</string> 
           <string>Diazinon</string> 
           <string>Tabun</string> 
           <string>Sarin</string> 
           <string>Soman</string> 
          </array> 
         </dict> 
        </array> 
       </dict> 
       <dict> 
        <key>Headings</key> 
        <string>Cholineesterase Reactivators</string> 
        <key>Drugs</key> 
        <array> 
         <string>Pralidoxime</string> 
         <string>Obidoxime</string> 
         <string>Trimedoxime</string> 
        </array> 
       </dict> 
      </array> 
      </dict> 
      <dict> 
+0

你'heads.count'爲你的'numberOfSections'和'numberOfRowsInSection'爲什麼? – Matt

+0

哦! numberOfRowsInSection應該是子目錄。@Matt – Nish

+0

您的代碼中存在太多問題。你是否設法無誤地編譯? – Matt

回答

0

您的變量heads是一個數組。因此,您應該從heads數組中獲取索引爲section的元素,然後從titleHeader中獲取「標題」。

試試這個

override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 
     var titleName = title 
     if let titleHeader = heads[section] as? [String: AnyObject], let titled = titleHeader["Headings"] as? String 
     { 
      titleName = titled 
     } 
     return titleName 
    } 
+0

是的工作@Matt – Nish

+0

如何設置標題和副標題每個部分都是副標題和藥物? – Nish