2016-03-08 79 views
0

好吧,所以我有用戶輸入一個名稱到一個文本字段中,並且一個按鈕將名稱傳遞給另一個視圖中的tableview,表視圖列出了名稱,但添加了新名稱時它會覆蓋以前的名稱,而不是列出添加到tableview的所有名稱。這裏是我的代碼:NSUserDefaults以表格形式保存並在數組中讀取

viewcontroller1:

@IBAction FUNC addPlant(發件人:AnyObject){

let array = self.title 
    NSUserDefaults.standardUserDefaults().setObject(array, forKey: "userName") 
    NSUserDefaults.standardUserDefaults().synchronize() 

}

viewcontroller2:

@IBOutlet弱VAR的tableView:UITableView的!

var userDefaults = NSUserDefaults.standardUserDefaults() 

var ourText = String() 

var textArray:[String] = [String]() 

override func viewDidLoad() { 
    super.viewDidLoad() 


    //self.tableview.delegate = self 
    self.tableView.dataSource = self 

    ourText = userDefaults.stringForKey("userName")! 
    textArray.append(ourText) 



} 

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

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

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) 
    cell.textLabel?.text = textArray[indexPath.row] 

    return cell 
} 
+0

我不知道你是問這裏。如果您在設置nsuserdefaults後調用viewcontroller2的viewdidload,則基本上將它附加到一個空數組。在將其保存到userdefaults之前,在viewcontroller1中執行附加操作。 –

+0

@NitinAlabur我想要的是將名稱保存在一個視圖控制器中,並將它們加載到viewcontroller 2中,並將它們顯示在表格視圖中。我可以輸入一個名稱並顯示,但我需要無限量的名稱才能輸入並顯示爲列表。 – user4682589

+0

在每個步驟中放置日誌語句,並查看每個步驟的調用位置。您的代碼沒有提供足夠的上下文以瞭解何時呈現視圖控制器。這些在兩個標籤?是vc1呈現/推送vc2? –

回答

0

您可以使用

textArray = NSUserDefaults.standardUserDefaults().arrayForKey("userName") 

或者

textArray = NSUserDefaults.standardUserDefaults().objectForKey("userName") 
+0

這將被放置在哪裏?謝謝 – user4682589

+0

在viewDidLoad中它是正確的 – Ro22e0