2015-10-10 21 views
5

私は動的なテーブルビューと配列を表示するプロトタイプセルを持っています。私の質問は、セルの左側に各セルの異なる名前を表示するボタンを追加する方法と、右側に配列情報を表示するラベルを追加する方法です。ありがとう! :Swiftで動的にテーブルビューセルにプログラムでテキストラベルとボタンを追加

左側::ボタン(配列情報)< ------------------->右側:D

だから、これは下のセルであると想像TextLabel私はあなたの質問のためのソリューションを得た(配列情報)

答えて

6

あなたはこの

let titleArray = ["a", "b", "c"] 

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    return 50 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    //return no.of cell do you want 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
{ 
    let cellHeight = tableView(self.tableView, heightForRowAtIndexPath: NSIndexPath(forRow: indexPath.row, inSection: indexPath.section)) 
    var cell = CustomCell(frame: CGRectMake(0, 0, self.view.frame.width, cellHeight), title: titleArray[indexPath.row]) 
    cell.cellLabel.text = //labelText 
    cell.cellButton.addTarget(self, action: "buttonPressed:", forControlEvents: UIControlEvents.TouchUpInside) 

    return cell 
} 

class CustomCell: UITableViewCell { 
    var cellButton: UIButton! 
    var cellLabel: UILabel! 

    init(frame: CGRect, title: String) { 
     super.init(style: UITableViewCellStyle.Default, reuseIdentifier: "cell") 

     cellLabel= UILabel(frame: CGRectMake(self.frame.width - 100, 10, 100.0, 40)) 
     cellLabel.textColor = UIColor.blackColor() 
     cellLabel.font = //set font here 

     cellButton = UIButton(frame: CGRectMake(5, 5, 50, 30)) 
     cellButton.setTitle(title, forState: UIControlState.Normal) 

     addSubview(cellLabel) 
     addSubview(cellButton) 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) { 
     super.init(style: style, reuseIdentifier: reuseIdentifier) 
    } 
} 
+0

素晴らしい助け、ありがとう:) –

1

、以下

var data = ["iPad", "iPhone", "iWatch", "iPod", "iMac"] 
var buttonData = ["US","China","London","Canada","Japan"]; 


//UITableViewDataSource Methods 

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
{ 
    return 80 
} 

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

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
{ 

    var cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell 

    var label = UILabel(frame: CGRectMake(280.0, 14.0, 100.0, 30.0)) 
    label.text = data[indexPath.row] 
    label.tag = indexPath.row 
    cell.contentView.addSubview(label) 


    let btn = UIButton.buttonWithType(UIButtonType.Custom) as UIButton 
    btn.backgroundColor = UIColor.greenColor() 
    btn.setTitle(buttonData[indexPath.row], forState: UIControlState.Normal) 
    btn.frame = CGRectMake(0, 5, 80, 40) 
    btn.addTarget(self, action: "buttonPressed:", forControlEvents: UIControlEvents.TouchUpInside) 
    btn.tag = indexPath.row 
    cell.contentView.addSubview(btn) 

    return cell 
} 

//Button Action is 
func buttonPressed(sender:UIButton!) 
{ 
    let buttonRow = sender.tag 
    println("button is Pressed") 
    println("Clicked Button Row is",buttonRow) 
} 
+0

のように実装することができ、手順に従ってくださいそれbuttonWithTypeが利用できないと言って、オブジェクトの構築UIButton(type:)を使用します...任意の提案? –

+0

優れています。それをiOS9の構文に更新しなければならなかった! :) –

+0

だから、ラベルとボタンを異なるサイズの画面に合わせるにはどうすればいいですか? –

関連する問題