セル1つ1つに別なサブタイトルをつける方法を教えてください。
テーブルビューにてセルを追加する際にタイトルとサブタイトルをつけたいのですが、タイトルは問題なく出来たのですが、新しいセルを追加するたびにサブタイトルに表示する文字が変わってしまってこまっています。
多分原因は y: Float = 0書いてあるからだと思っています。
yにx1とx2を掛け算して求めた値を代入していて、それをサブタイトルをしてcell.detailTextLabel?.text = String(format: "%.f回", y)で呼び出してるので保存するたびにサブタイトルが変わっているのだと思います。
そこでセル1つ1つに計算して求めた回数が表示されるようにサブタイトルをつけたいのですがどのように書き直せばよろしいでしょうか?
import UIKit
var y: Float = 0
private var score: UILabel!
class ViewController: UIViewController,UITextFieldDelegate {
private var myTextField: UITextField!
private var myTextField2: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// ボタンを生成する.
let nextButton: UIButton = UIButton(frame: CGRectMake(0,0,self.view.bounds.width/3,self.view.bounds.height/11))
nextButton.backgroundColor = UIColor.redColor();
nextButton.layer.masksToBounds = true
nextButton.setTitle("測定", forState: .Normal)
nextButton.layer.cornerRadius = 20.0
nextButton.layer.position = CGPoint(x: self.view.bounds.width/2 , y:self.view.bounds.height/1.8)
nextButton.addTarget(self, action: "onClickMyButton:", forControlEvents: .TouchUpInside)
// ボタンを追加する.
self.view.addSubview(nextButton);
// ボタンを生成する.
let nextButton2: UIButton = UIButton(frame: CGRectMake(0,0,self.view.bounds.width/3,self.view.bounds.height/11))
nextButton2.backgroundColor = UIColor.redColor();
nextButton2.layer.masksToBounds = true
nextButton2.setTitle("保存", forState: .Normal)
nextButton2.layer.cornerRadius = 20.0
nextButton2.layer.position = CGPoint(x: self.view.bounds.width/2 , y:self.view.bounds.height/1.5)
nextButton2.addTarget(self, action: "onClickMyButton2:", forControlEvents: .TouchUpInside)
// ボタンを追加する.
self.view.addSubview(nextButton2);
score = UILabel(frame: CGRectMake(0, 0,self.view.bounds.width/1.5,self.view.bounds.height/14))
score.layer.position = CGPoint(x: self.view.bounds.width/2, y: self.view.bounds.height/3)
self.view.addSubview(score);
}
internal func onClickMyButton(sender: UIButton) {
let x1 = Float(myTextField.text!)
let x2 = Float(myTextField2.text!)
y = x1! * x2!
score.text = String(format: "%.f回", y)
}
internal func onClickMyButton2(sender: UIButton){
todoItem.append(self.myTextField3.text!)
NSUserDefaults.standardUserDefaults().setObject(todoItem, forKey: "todoList")
// TableViewを再読み込み.
myTableView.reloadData()
}
〜〜〜〜〜〜〜
ここから別のファイル(ビューコントローラー)です。
〜〜〜〜〜〜
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
cell.detailTextLabel?.text = String(format: "%.f回", y)
// Cellに値を設定
cell.textLabel?.text = todoItem[indexPath.row]
return cell
}
〜〜〜〜〜
編集後追加コード
〜〜〜〜〜
override func viewDidLoad() {
super.viewDidLoad()
if NSUserDefaults.standardUserDefaults().objectForKey("todoList") != nil {
todoItem = NSUserDefaults.standardUserDefaults().objectForKey("todoList") as! [String]
}
if NSUserDefaults.standardUserDefaults().objectForKey("todoList1") != nil {
todoSubitem = NSUserDefaults.standardUserDefaults().objectForKey("todoList1") as! [String]
}
省略
}
//Cellの総数を返す
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return todoItem.count
}
//Cellに値を設定する
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
// Cellに値を設定
cell.textLabel?.text = todoItem[indexPath.row]
cell.detailTextLabel?.text = todoSubitem[indexPath.row]
return cell
}
//Cellを挿入または削除しようとした際に呼び出される
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath){
if editingStyle == UITableViewCellEditingStyle.Delete{
todoItem.removeAtIndex(indexPath.row)
NSUserDefaults.standardUserDefaults().setObject(todoItem, forKey: "todoList")
todoSubitem.removeAtIndex(indexPath.row)
NSUserDefaults.standardUserDefaults().setObject(todoSubitem, forKey: "todoList1")
myTableView.reloadData()
}
}
このように書いています。