2015-02-03 19 views
12

Trong dự án hiện tại của tôi, tôi có chế độ xem chi tiết hiển thị bản ghi cụ thể từ chế độ xem bảng của tôi. Tôi có nhãn sauChuyển dữ liệu đến và từ Popover trong Swift

@IBOutlet weak var vacationImageView: UIImageView! 
@IBOutlet weak var percentSaved: UILabel! 

@IBOutlet weak var cost: UILabel! 
@IBOutlet weak var saved: UILabel! 
@IBOutlet weak var circleProgressView: CircularProgressView! 

@IBOutlet weak var daysDepart: UILabel! 

tôi gọi một popover mà tôi muốn gửi giá trị văn bản hiện hành của lưu để bật lên của tôi, cho phép người dùng chỉnh sửa nó và gửi nó trở lại xem. Đây là cuộc gọi popover của tôi.

@IBAction func addPopover(sender: UIView) { 
    let savingsInformationViewController = storyboard?.instantiateViewControllerWithIdentifier("SavingsAddPopover") as UIViewController 
    savingsInformationViewController.modalPresentationStyle = .Popover 
    savingsInformationViewController.preferredContentSize = CGSizeMake(200, 200) 



    let popoverController = savingsInformationViewController.popoverPresentationController 
    popoverController?.sourceView = sender 
    popoverController?.permittedArrowDirections = .Any 
    popoverController?.delegate = self 




    presentViewController(savingsInformationViewController, animated: true, completion: nil) 
} 

Tôi đã nghĩ rằng tôi có thể tham chiếu đối tượng dữ liệu từ cửa sổ bật lên nhưng không thể ... ít nhất không phải cách tôi đang nghĩ.

+0

Có vẻ như bạn đang cố gắng tiết kiệmInInViewViewController là trình điều khiển nội dung. Tại sao không thêm thuộc tính vào lớp đó để giữ dữ liệu của bạn và chỉ cần gán nó sau khi bạn khởi tạo bộ điều khiển trong phương thức bạn đang hiển thị ở trên? Rất nhiều ví dụ popover cho thấy hành vi. –

+0

Bạn có ý nghĩa gì bởi "không thể tham khảo"? Bạn đã thử như thế nào? –

+0

Tôi đã thử tham chiếu đối tượng biến vacation.totalSaved mà tôi đang sử dụng trong giao diện gọi pop2 – ddpishere

Trả lời

35
class ViewController: UIViewController,SavingViewControllerDelegate,UIPopoverPresentationControllerDelegate{ 

     @IBOutlet var labelText: UILabel! 
     override func viewDidLoad() { 
      super.viewDidLoad() 
      // Do any additional setup after loading the view, typically from a nib. 
     } 

     @IBAction func buttonPopOverClick(sender: UIButton) 
     { 
      let savingsInformationViewController = storyboard?.instantiateViewControllerWithIdentifier("SavingsAddPopoverVC") as SavingViewController 

      savingsInformationViewController.delegate = self 
      savingsInformationViewController.strSaveText=labelText.text 

      savingsInformationViewController.modalPresentationStyle = .Popover 
      if let popoverController = savingsInformationViewController.popoverPresentationController { 
       popoverController.sourceView = sender 
       popoverController.sourceRect = sender.bounds 
       popoverController.permittedArrowDirections = .Any 
       popoverController.delegate = self 
      } 
      presentViewController(savingsInformationViewController, animated: true, completion: nil) 
     } 

     func saveText(strText: NSString) { 
      labelText.text=strText 
     } 

     // MARK: - UIPopoverPresentationControllerDelegate 
     func adaptivePresentationStyleForPresentationController(controller: UIPresentationController!) -> UIModalPresentationStyle { 
      return .FullScreen 
     } 

     func presentationController(controller: UIPresentationController!, viewControllerForAdaptivePresentationStyle style: UIModalPresentationStyle) -> UIViewController! { 
      return UINavigationController(rootViewController: controller.presentedViewController) 
     } 
    } 


    protocol SavingViewControllerDelegate 
    { 
     func saveText(var strText : NSString) 
    } 

    class SavingViewController: UIViewController { 
     @IBOutlet var textField: UITextField! 
     var delegate : SavingViewControllerDelegate? 
     var strSaveText : NSString! 
     override func viewDidLoad() { 
      super.viewDidLoad() 
      textField.text = strSaveText 
      // Do any additional setup after loading the view. 
     } 

     @IBAction func buttonDone(sender: UIButton) 
     { 
      if (self.delegate) != nil 
      { 
       delegate?.saveText(textField.text) 
       self.dismissViewControllerAnimated(true, nil) 
      } 
     } 
    } 
+0

Đây chính xác là những gì tôi cần. Nó có ý nghĩa rất nhiều bây giờ. Cảm ơn – ddpishere

+0

Hoàn hảo !! Cool :) – Shashi3456643

+0

Cảm ơn mã mẫu. Nó đã giúp tôi rất nhiều. – Madhu

Các vấn đề liên quan