Danger Veger
Danger Veger

Reputation: 1147

Swift watch. Sending data from one view controller to another

I am trying to send an instance of Data class object from my ViewController to DataViewControllerSwift.

ViewController

var data : Data = Data()

data = dataList?.objectAtIndex(rowIndex) as Data
var dataViewController : DataViewControllerSwift?

dataViewController!.data = data
self.pushControllerWithName("DataaaViewControllerSwift", context: nil)

DataViewControllerSwift

 class DataViewControllerSwift: WKInterfaceController {
 var data : Data! = Data()
 }

However data instance is nil in my DataViewControllerSwift. I am little confuse and don't know why this is happening.

I tired this

 var dataViewController : DataViewControllerSwift? = DataViewControllerSwift()

however I only got an error.

Upvotes: 1

Views: 1125

Answers (1)

ztan
ztan

Reputation: 6931

Thats not really a good way to pass data between controllers in WatchKit.

First, in your ViewController, you should do

var data = dataList?.objectAtIndex(rowIndex) as Data
self.pushControllerWithName("DataViewControllerSwift", context: data)

So that you can pass the data from your ViewController to DataViewController via context

Second, in your DataViewController's override func awakeWithContext(context: AnyObject?) method, you can do the following to get the data passed from ViewController:

if let theData = context as? Data {
   self.data = theData
}

Upvotes: 1

Related Questions