2016-06-22 107 views
-1

我有一個名稱的東西,並且每個名稱都轉到另一個包含表(同一個)的視圖控制器。我需要根據它的名字來區分tableView中顯示的數據。通過文本排序表

這是我的代碼到目前爲止: 我在點擊一個名稱,它到我的表格視圖,但每個表具有相同的確切數據,它不會根據名稱更改。順便說一句,finishAdding意味着添加一個新的數據到我的表(它應該只出現在一個名字上)。

import UIKit 

class EachInfo: UIViewController, UITableViewDelegate, UITableViewDataSource { 


@IBOutlet weak var addLogBtn: UIButton! 

@IBOutlet weak var logTable: UITableView! 

@IBOutlet weak var logBoxNew: UITextView! 

var toDoData:NSDictionary = NSDictionary() 
var logItems:NSMutableArray = NSMutableArray() 

var oppoName = "" 


override func viewDidAppear(animated: Bool) { 
    // loads all instead of certain ones 
    let userDefaultsL:NSUserDefaults = NSUserDefaults.standardUserDefaults() 

    let itemListFromUserDefaultsL:NSMutableArray? = userDefaultsL.objectForKey("itemList") as? NSMutableArray 

    if (itemListFromUserDefaultsL != nil){ 
     logItems = itemListFromUserDefaultsL! 
    } 

    self.logTable.reloadData() 
} 

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    self.view.endEditing(true) 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    var logCell: UITableViewCell = self.logTable.dequeueReusableCellWithIdentifier("logcell")! as UITableViewCell 
    var singleLogItem: NSDictionary = logItems.objectAtIndex(indexPath.row) as! NSDictionary 
    logCell.textLabel?.text = singleLogItem.objectForKey("itemLog") as? String 
    return logCell 
} 
func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    // #warning Potentially incomplete method implementation. 
    // Return the number of sections. 
    return 1 
} 
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return logItems.count 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 


    self.logTable.registerClass(UITableViewCell.self, forCellReuseIdentifier: "logcell") 
    self.logTable.dataSource = self 

    // Do any additional setup after loading the view. 
} 



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


/* 
// MARK: - Navigation 

// In a storyboard-based application, you will often want to do a little preparation before navigation 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    // Get the new view controller using segue.destinationViewController. 
    // Pass the selected object to the new view controller. 
} 
*/ 



// change this to the opponentz platform and format. not actual software though 
@IBAction func addLogAction(sender: AnyObject) { 



} 
@IBAction func finishAdding(sender: AnyObject) { 
    var userDefaultsL:NSUserDefaults = NSUserDefaults.standardUserDefaults() 

    var singleLogItem:NSMutableArray? = userDefaultsL.objectForKey("itemList") as? NSMutableArray 



    var DataSet:NSMutableDictionary = NSMutableDictionary() 
    DataSet.setObject(logBoxNew.text, forKey: "itemLog") 



    if ((singleLogItem) != nil){ //data already available 

     var newMutableListL:NSMutableArray = NSMutableArray(); 

     for dictL:AnyObject in singleLogItem!{ 


      newMutableListL.addObject(dictL as! NSDictionary) 

     } 


     userDefaultsL.removeObjectForKey("itemList") 
     newMutableListL.addObject(DataSet) 
     userDefaultsL.setObject(newMutableListL, forKey: "itemList") 

    }else{ //first opponentz item 
     userDefaultsL.removeObjectForKey("itemList") 
     singleLogItem = NSMutableArray() 
     singleLogItem!.addObject(DataSet) 
     userDefaultsL.setObject(singleLogItem, forKey: "itemList") 

    } 

    userDefaultsL.synchronize() 

// let userDefaultsL:NSUserDefaults = NSUserDefaults.standardUserDefaults() 

    let itemListFromUserDefaultsL:NSMutableArray? = userDefaultsL.objectForKey("itemList") as? NSMutableArray 

    if (itemListFromUserDefaultsL != nil){ 
     logItems = itemListFromUserDefaultsL! 
    } 

    self.logTable.reloadData() 

} 



} 
+0

不能幫助你解決你的問題,但你應該真正閱讀'if let'和'guard'語句。他們會刪除很多你的鍋爐板 – Alexander

+1

這個名字應該如何改變事情......這與排序有什麼關係? –

+0

@PhillipMills這個名字就像一個文件夾。我只想要爲每個名字提出某些事情。我只希望當他們以同樣的名字進入時出現的東西 –

回答

0

你有你叫[tableView reloadData]之前,您logItems文本排序:

這是用Objective-C是我不熟悉的雨燕的示例代碼。

[self.logItems sortUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { 
    NSDictionary *dict1 = obj1; 
    NSDictionary *dict2 = obj2; 
    NSString *text1 = [dict1 objectForKey:@"itemLog"]; 
    NSString *text2 = [dict2 objectForKey:@"itemLog"]; 
    return [text1 compare:text2]; 
}]; 
+0

首先,謝謝。雖然我試圖把它放到一個快速轉換器中,所以我可以理解它,並試圖在逗號和非空之間加逗號。你能解釋一下嗎?順便說一句,Xcode說它像以前的值競爭 –

+0

self.logItems.sortUsingComparator({(obj1:id _Nonnull,obj2:id _Nonnull) - > NSComparisonResult var dict1:[NSObject:AnyObject] = obj1 var dict2:[ NSObject:AnyObject] = obj2 var text1:String =(dict1 [「itemLog」] as!) var text2:String =(dict2 [「itemLog」] as!) return text1.compare(text2) } ) –

+0

你是從swift轉換器得到的嗎? –