2016-03-08 74 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