[swift3.0] UserDefaults를 사용하여 tableview에 표시되는 셀의 내용을 저장하는 기능을 만듭니다.

3873 단어 iOSSwift3.0

소개



userDefaults를 사용하여 tableView에 표시된 기사를 저장하는 기능을 구현할 기회가 있었으므로 비망록으로 올립니다.



거친 흐름



1.tableView 표시(즐겨찾기 버튼 포함)
2. 즐겨찾기 버튼 탭시 셀번째를 획득.
2-2. 탭한 셀이 가지는 Dic를, 빈 선언한 배열에 납입
2-3. 배열을 userDefaults에 설정합니다.
3. 다른 View에서 userDefaults에서 꺼내 tableView로 표시.

1.tableView 표시(즐겨찾기 버튼 포함)


PropertyList.plist 를 만들고 tableView에 표시합니다.



class TableViewController: UIViewController {

    @IBOutlet weak var TableView: UITableView!

    let ud : UserDefaults = UserDefaults.standard
    var favoriteListArr :[[String : String]]=[[:]]

    var plistArr = [Dictionary<String, String>]()

    override func viewDidLoad() {
        super.viewDidLoad()

        let path = Bundle.main.path(forResource: "PropertyList", ofType: "plist")
        plistArr = NSArray(contentsOfFile: path!) as! [Dictionary<String, String>]


    }
}

extension TableViewController: UITableViewDataSource , UITableViewDelegate {

    //行数指定
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return plistArr.count
    }


    //表示内容
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomCell
        cell.Title.text = plistArr[indexPath.row]["title"]
        return cell
    }

}



2. 즐겨찾기 버튼 탭시 셀번째를 획득.




    //最上部の画像に登場する星型の黄色ボタン
    @IBAction func favoriteYellowBtn(_ sender: Any) {

        let btn = sender as! UIButton
        //タップした星型の黄色ボタンの行数とセルの行数が一致させる
        let cell = btn.superview?.superview as! TableViewCell

        //星型ボタンタップ時のセル番目を獲得
        let tappedRow = TableView.indexPath(for: cell)?.row

        let tableViewSelected = plistArr[tappedRow!]

        //タップしたセルが持つ辞書型を、空宣言した配列に格納
        favoriteListArr.append(tableViewSelected)
        //その配列をuserDefaultsに、セットする。
        ud.set(favoriteListArr as! Array, forKey: "favoriteListArr")
        ud.synchronize()

    }

3. 다른 View에서 userDefaults에서 꺼내 tableView로 표시.




import UIKit

class FavoriteTableViewController: UIViewController {

    let ud : UserDefaults = UserDefaults.standard
    var favoriteListArr : Array<[String : Any]> = []


    override func viewDidLoad() {
        super.viewDidLoad()
        if var favorites = ud.array(forKey: "favoriteListArr") as! Array?{
            favorites.removeFirst()
            favoriteListArr = favorites as! Array<[String : Any]>
        }
    }


extension FavoriteTableViewController : UITableViewDataSource, UITableViewDelegate {

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


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

        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! UITableViewCell
        var favoriteListArrText = (self.favoriteListArr[indexPath.row] as! [String : String])["title"]
        cell.textLabel?.text = favoriteListArrText
        return cell
    }
}



결론



Xcode씨로부터,type any has no subscript members그리고 잘 화가났다. 형식 선언은 제대로 합니다. m(__)m

더 좋은 쓰는 방법이 있습니다! 등 있으면, 지적 부탁드립니다 m (__) m

좋은 웹페이지 즐겨찾기