が上書きされています。何が起こるかは、ユーザーが新しい連絡先を作成するのに役立つViewControllerに移動した後です。以前に追加された連絡先がリストから削除されます。私は調査を試みましたが、私が発見したのは、Arrayの新しいElement(またはContact)を作成した後で、何らかの理由で私のコードが古い連絡先を削除し、新しく作成した連絡先に置き換えます。興味深いのは、私のアプリ(新しいViewControllerに行く)の別のページに行くだけで、何らかの理由で私のアプリが新しく作成されたContactを連絡先リストから削除し、自分のTableViewを空にすることです。ここで新しい要素は、アレイが、それはアプリが実際に連絡先リストに新しい連絡先を追加するための時間が来るまでXcodeと、すべてが順調に走っていたのw /私は連絡先リストアプリの並べ替えを作成しています前のメンバーの迅速
は私のコーディングと私が試したの内訳です:
これは初期のViewController(私はテーブルビューを実装し、テーブルビュー内のセルに編成されている配列を作成しました)
です私のユーザーが新しい連絡先を作成し、どのように私は連絡先リストここclassPickViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate {
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if Save.touchInside{
var VC :ViewController = segue.destinationViewController as! ViewController
if VC.names.count >= 1 {
VC.names.insert(NameText, atIndex: (VC.names.count)+1)
VC.numbers.insert(PhoneText,atIndex: (VC.numbers.count)+1)
}
else{
VC.names.insert(NameText, atIndex: (VC.names.count)+0)
VC.numbers.insert(PhoneText,atIndex: (VC.numbers.count)+0)
}
}
}
@IBAction func SaveContact(sender: UIButton) {
performSegueWithIdentifier("SaveEm", sender: self)//this takes the usr to the Contact list
}
に新しい連絡先を追加しようとする場合は
class ViewController: UIViewController, UITableViewDataSource,UITableViewDelegate {
@IBOutlet var TableView: UITableView!
var names = [String]()
var numbers = [String]()
override func viewDidAppear(animated: Bool) {
TableView.reloadData()
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return names.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! CustomCell
cell.Name.text = names[indexPath.row]
cell.PhoneNumber.text = numbers[indexPath.row]
cell.reloadInputViews()
return cell
}
}
これは、アイブ氏は、に使用されるコードされていますテーブルビュー(UITableViewCellのファイル)
class CustomCell: UITableViewCell {
@IBOutlet var Name: UILabel!
@IBOutlet var PhoneNumber: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
を持つ構造体の保存でしょう、あなたのアプリがViewController-> classPickViewController->のViewControllerからナビゲートしているように見えますので、あなたは 'ViewController'の新しいインスタンスを持っています新しい空の配列から開始します。あなたは、表示された 'ViewController'に戻ることができるように、ゆるやかなセグを見てください。また、アプリケーションの実行間でデータを保持するには、Core Dataのようなものを使用する必要があります。また、2つの配列を持つのではなく、 "Contact"構造体の配列を格納する必要があります。 – Paulw11
うわー...だから私はかなりの間違いをしたのですか?これは私の配列の上書き自体の問題も解決しますか? – CoolMAn
はい。あなたの配列は上書きされません。新しい配列(空の配列)を作成してから、新しいオブジェクトを追加します。他の配列はまだメモリに置かれていますが、新しいView Controllerを「上に」プレビューしているため、アクセスできません – Paulw11