2016-12-23 4 views
0

Ich verwende eine Tabellenansicht mit mehreren Abschnitten. In einer Tabellenansicht Zelle, die Textbeschriftung und detaillierte Textbeschriftung zum Anzeigen von Array-Objekten aufweist. Jetzt möchte ich einen neuen Abschnitt hinzufügen, in diesem Abschnitt werde ich mehr Text wie einen Absatz haben. Wie zeigt man Daten in der Textansicht an?Wie Sie Textansicht in eine Tabellenansichtszelle mit mehreren Abschnitten einbetten?

{ 
var dataSection01:NSMutableArray = NSMutableArray() 
var dataSection02:NSMutableArray = NSMutableArray() 
var sectionTitleArray : NSMutableArray = NSMutableArray() 
var arrayForBool : NSMutableArray = NSMutableArray() 
var sectionContentDict : NSMutableDictionary = NSMutableDictionary() 

in viewDidLoad() 
sectionTitleArray = ["Assignment Information","Details"] 
let tmp1 : NSArray = assignInfoArray 
var string1 = sectionTitleArray .objectAtIndex(0) as? String 
[sectionContentDict .setValue(tmp1, forKey:string1!)] 
let tmp2 : NSArray = detailsInfoArray 
string1 = sectionTitleArray .objectAtIndex(1) as? String 
[sectionContentDict .setValue(tmp2, forKey:string1!)] 

dataSection01 = [ "Name:", "Phone", "Email" so on] 
dataSection02 = [ "Address", "Street", "State","ZipCode"] 

//mapping like this using object mapper 
assignInfoArray.addObject((newDetails?.clientName)!) 
assignInfoArray.addObject((newDetails?.clientPhone)!) 


func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return sectionTitleArray.count 
} 
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{ 



    let CellIdentifier = "CellRightDetail" 
    var cell :UITableViewCell? 
    cell = self.tableView.dequeueReusableCellWithIdentifier(CellIdentifier) 
    if cell == nil { 
     cell = UITableViewCell(style: UITableViewCellStyle.Value2, reuseIdentifier: "CellRightDetail") 
    } 
    let manyCells : Bool = arrayForBool .objectAtIndex(indexPath.section).boolValue 

    if (!manyCells) { 
     // cell.textLabel.text = @"click to enlarge"; 
    } 
    else{ 
     let items: NSMutableArray = self.dataFromIndexPath(indexPath) 

     let content = sectionContentDict .valueForKey(sectionTitleArray.objectAtIndex(indexPath.section) as! String) as! NSArray 
     cell!.detailTextLabel?.text = content .objectAtIndex(indexPath.row) as? String 
     cell!.detailTextLabel?.textColor = UIColor.whiteColor() 
     cell!.textLabel?.textColor = UIColor.whiteColor() 
     cell!.textLabel?.font = UIFont(name:"Helvetica-Bold", size: 13.0) 
     cell!.textLabel?.text = items[indexPath.row] as? String 

    } 

    return cell! 
} 

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

    if(arrayForBool .objectAtIndex(section).boolValue == true) 
    { 
     let tps = sectionTitleArray.objectAtIndex(section) as! String 
     let count1 = (sectionContentDict.valueForKey(tps)) as! NSArray 
     return count1.count 
    } 
    return 0; 
} 
func dataFromIndexPath(indexPath: NSIndexPath!) -> NSMutableArray! 
{ 
    if (indexPath.section == 0) 
    { 
     return dataSection01 
    } 
    else if (indexPath.section == 1) 
    { 
     return dataSection02 
    } 

    return nil 
} 

} 
+0

Können Sie sich ein Bild vorstellen, das zeigt, was Sie erreichen möchten? – Erik

+0

@Ajay_Ajju, sollten Sie Ihre Frage bearbeiten, mehr Informationen zu uns zeigen, Ihre Frage ist nicht klar, zeigen Sie Ihren Code. – aircraft

+0

Ich denke, Erstellen von CustomTableViewCell ist gute Antwort –

Antwort

0

In Storyboard blauer Farbe ist die erste Zelle und grüne Farbe ist meine zweite Zelle.

enter image description here

Sie haben zwei Zellen wie diese erstellen und für jede Zelle müssen Sie verschiedene customcell Klasse erstellen. Machen Sie Steckdosen von UILabel und UITextView in ihrer jeweiligen Klasse und verwenden Sie den folgenden Code. Möglicherweise variieren Ihre Anforderungen etwas, verwenden Sie also Delegierte.

Implementieren Sie den Code wie folgt aus:

// MARK:- --- TableView Height --- 

    open func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat{ 
     return 45 
    } 

    open func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat{ 
     return 1 
    } 

    open func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
     return 45 
    } 

    open func numberOfSections(in tableView: UITableView) -> Int{ 
     return 2 
    } 

    // MARK:- --- TableView tittle --- 
    open func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String?{ 

     return "hearder " + String(section) 
    } 

    open func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?{ 

     let viewHeader : UIView = UIView(frame: CGRect(x: 0 , y: 64, width: self.view.frame.size.width , height: 45)) 
     viewHeader.backgroundColor = UIColor(red: 180.0/255.0, green: 160.0/255.0, blue: 240.0/255.0, alpha: 1) 
     let btnHeader : UIButton = UIButton(frame: CGRect(x: 0 , y: 0, width: viewHeader.frame.size.width , height: viewHeader.frame.size.height)) 
     btnHeader.setTitle("section #\(section)", for: UIControlState()) 
     btnHeader.backgroundColor = UIColor.darkGray 
     btnHeader.isSelected = arrIsExpand[section] 
     btnHeader.tag = section 
     btnHeader.addTarget(self, action:#selector(expandMethod(_:)) , for: UIControlEvents.touchUpInside) 
     viewHeader.addSubview(btnHeader) 

     return viewHeader 

    } 

    // MARK:- --- TableView data source --- 
    open func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{ 
      return 10 

    } 

    open func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{ 

     if(indexPath.section == 0){ // for your first section 
      let firstCell : MyFirstCustomCell = tableView.dequeueReusableCell(withIdentifier: "firstcell") as! DesignTableCell 
      firstCell.lblTittle?.text = "Tittle" 
      firstCell.lblDescription?.text = "Description" 
      return firstCell 
     } 
      //for second section 
     else{ 
      let secondCell : MySecondCustomCell = tableView.dequeueReusableCell(withIdentifier: "secondcell") as! DesignTableCell 
      secondCell.lblTittle?.text = "Tittle" 
      secondCell.txtViewData?.text = "Blah! Blah!" 
      return secondCell 
     } 
    } 

sein kann, das Problem mit der Zeilenhöhe Gesicht, weil ich statische Höhe geben hier 45, dh, so verwenden uiautomaticdimension statt statischer 45, und auch die impliment delegieren Sie estimatedHeightForRow.

+0

Vielen Dank, es hat funktioniert –

+0

Willkommen @Ajay_Ajju –

Verwandte Themen