2016-01-22 86 views
0

我想用一個按鈕一次移動我的tableView的整個部分。我希望它將所有選定的行移動到另一個tableView並從第一個刪除它們。第一個tableView數據保存在SList中,第二個是SCList。兩個實體都有屬性item,qty,desc只是第一個字母從sl變爲sc(即slitem變爲scitem)。我遇到的問題是將數據從SList實體更改爲SCList實體。我如何獲得它從SList實體中刪除數據並更改爲SCList並將其添加到相應的tableView中?將tableView數據移動到另一個具有單獨實體名稱的tableView

按鈕代碼:

@IBAction func Move(sender: AnyObject) { 
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! SLTableViewCell 
    let passValue = cell.cellLabel!.text 
    print(passValue) 
    self.performSegueWithIdentifier("moveToSC", sender: self) 
} 

Segue公司代碼:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { 
    if segue.identifier == "editItem" { 
     let SListController:SLEdit = segue.destinationViewController as! SLEdit 
     SListController.item = selectedItem 
    } 
    if segue.identifier == "moveToSC" { 
     let SCListController:SCart = segue.destinationViewController as! SCart 
     SCListController.item = item 
    } 

我註釋掉 「如果segue.identifier == 」moveToSC「」 代碼,它塞格斯,但不傳遞任何信息。所有打印的是「可選(」標籤「)」,沒有任何通過或刪除。

我不確定是否需要其他代碼。如果您需要查看任何內容,請讓我知道,我會編輯我的代碼。

我試圖不使用didSelectRow方法,因爲它改變了從第0節到第1節的行。我想用一個按鈕來一次移動所有的東西。我甚至不得不與實體混淆,還是應該移動並自行更改它?我很迷茫...

回答

0

直接回答你的問題是,你需要創建一個SCList的實例,將其屬性值設置爲與SList對象的屬性相同,然後刪除SList對象。我從你以前的問題中瞭解到,你正在爲第一個tableView使用fetchedResultsController,有兩個部分;移動的對象是在第1節:

@IBAction func Move(sender: AnyObject) { 
    let sectionInfo = self.fetchedResultsController.sections![1] 
    let objectsToMove = sectionInfo.objects as! [SList] 
    for item in objectsToMove { 
     let newItem = NSEntityDescription.insertNewObjectForEntityForName("SCList", inManagedObjectContext:self.managedObjectContext!) as! SCList 
     newItem.scitem = item.slitem 
     newItem.scqty = item.slqty 
     newItem.scdesc = item.scdesc 
     self.managedObjectContext.deleteObject(item)    
    } 
    self.performSegueWithIdentifier("moveToSC", sender: self) 
} 

較長的回答你的問題是從一個實體到另一個像這樣的複製數據並不理想 - 這意味着你可能需要考慮自己的數據模型的一些更多。例如,您可以具有一個附加屬性,該屬性反映該項目應出現在哪個tableView中。您可以爲獲取的結果控制器指定謂詞,以確保表視圖僅顯示適當的項目。然後「移動」一個項目就可以簡單地改變新屬性的值。

+0

因此,基本上最好有一個實體(比如說列表),並且在它下面有4個屬性,而不是在每個單獨的下面。然後根據我希望它出現在哪個列表中,然後設置更多我需要的作爲bools,比如slist,sclist或plist = true/false。對我來說,這聽起來更復雜一些,但聽起來像是這樣將是,並希望它更容易。我會給你一個鏡頭。 –

+0

我想知道你能否再次幫助我。我已將所有設置都更改爲一個實體(List),每個列表的屬性都設置爲bools(例如slist,sclist和plist)。除非它們在我想要的列表上創建,否則它們在創建該項目時是錯誤的。但是,它們仍然顯示在每個列表中。排序描述符針對每個列表(即slist)。我如何說如果slist = true,那麼只顯示slist tableview? –

+0

在fetchrequest中,指定謂詞以將結果過濾爲所需的結果。類似於'fetchRequest.predicate = NSPredicate(format:「slist == true」)' – pbasdf

相關問題