2016-05-15 6 views
1

私が正常に含まれているFirstViewControllerはどのようにポップオーバー

@IBAction func editButtonPressed(sender: UIBarButtonItem) { 
    self.tableView.allowsMultipleSelectionDuringEditing = true 
    if self.editing { 
      let popoverEditMenu = self.storyboard?.instantiateViewControllerWithIdentifier("popoverEditMenu") as! EditMenuTableViewController 
      popoverEditMenu.modalPresentationStyle = .Popover 
      popoverEditMenu.popoverPresentationController!.delegate = self 
      let popover: UIPopoverPresentationController = popoverEditMenu.popoverPresentationController! 
      popover.barButtonItem = sender 
      presentViewController(popoverEditMenu, animated: true, completion: nil) 
     } else { 
      editButton.image = UIImage(named: "profile_more") 
      self.editing = !self.editing 
     } 
} 

編集テーブルの編集テーブルをオンに編集のUITableViewControllerを無効にします。上記の操作の後、私は、ポップオーバーで表のセルをクリックして、編集を終了するコード:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let firstTableVC = self.storyboard?.instantiateViewControllerWithIdentifier("firstTableVC") as! FirstTableViewController 

    tableView.deselectRowAtIndexPath(indexPath, animated: true) 
    switch indexPath.row { 
    case 0: 
     self.dismissViewControllerAnimated(true, completion: nil) 
     firstTableVC.editing = false // Disable Editing 
     firstTableVC.editButton.image = UIImage(named: "1461294921_15.Pencil") 
    default: 
     break 
    } 
} 

しかし、そこにボタン画像に変化はなく、テーブルの編集モード

+1

にデリゲートの継承を指定する必要があります。この場合、私はデリゲート/プロトコルパターンをお勧めしますが、あなたが望むものを達成するにはいくつかの方法があります。 [この回答](http://stackoverflow.com/a/31934786)の「前のView Controllerにデータを戻す」を参照してください。下記の@ Alexeyの答えも心に留めておく必要があります。これもまた重要です。 – pbasdf

+0

@pbasdfありがとうございました:) –

答えて

1

ソリューションが見つかりました!

この問題は、委任の使用によって解決されました。先端のための@pbasdfのおかげです。

import UIKit 

protocol SecondTableViewControllerDelegate { 
    func endEditing() 
} 

class SecondTableViewController: UITableViewController { 

    var delegate: SecondTableViewControllerDelegate? 

    ... 

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

     tableView.deselectRowAtIndexPath(indexPath, animated: true) 
     switch indexPath.row { 
     case 0: 
      self.dismissViewControllerAnimated(true, completion: nil) 
      delegate?.endEditing() 
     default: 
      break 
     } 
    } 
} 

FirstViewControllerのDelegate関数です。あなたは、問題は、あなたがポップオーバーが提示された元のインスタンスから完全に分離されFirstTableViewController、全く新しいインスタンスを作成しているということであるFirstViewController

func endEditing() { 
    self.editing = false 
    editButton.image = UIImage(named: "1461294921_15.Pencil") 
} 
+0

... UIButtonに 'image'を直接設定しないでください:@ AlexeyShavitovの答えに従って' setImage:forState: 'を使ってください。あなたがそうしない限り、ボタンは状態を変えるときにイメージを「忘れる」ことができます。 – pbasdf

+0

@pbasdfナビゲーションバーボタンがあります。彼女はsetImageメソッドを持っていません –

+0

謝罪、私は文脈からそれを見たはずです。私の前のコメントを無視してください。 – pbasdf

0

を無効にしませんお試しください

firstTableVC.editButton.setImage(UIImage(named:"1461294921_15.Pencil"), forState: UIControlState.Normal) 

これは動作する必要があります。

関連する問題