Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SwiftUI Calling functions from other class

I am having a little trouble here: I have a class

class TempC {
    func GetData(){
          //do stuff
    }
}

And in ContentView I want to call the function, but I can't manage to do it, I am getting errors...

struct ContentView: View {

var variable : TempC
variable.GetData()
var body: some View {
        Text("Hello World")
    }
}

Or in any other method. How can I call an external function now?

PS: The error that I get are on the line with variable.GetData() which are:

  1. Consecutive declarations on a line must be separated by ";"
  2. Expected "("in argument list of cantons declaration
  3. Expected "{"in body of function declaration
  4. Expected 'func' keyword in instance method declaration
  5. Invalid redeclaration of 'variable()'

It's like it is expecting to create a new function not to get the one that is already existing.

like image 319
Blaj Bogdan Avatar asked Nov 15 '19 19:11

Blaj Bogdan


People also ask

Can a SwiftUI view be a class?

You can go ahead and implement View as a class. If possible implement this in a fresh new SwiftUI project.

How do you call a view in SwiftUI?

This is the Code: struct testView: View { var body: some View { VStack { Text("TextBox") Text("SecondTextBox") self. testFunction() } } func testFunction() { print("This is a Text.") } }


1 Answers

Depending on what your going to do in that call there are options, ex:

Option 1

struct ContentView: View {

    let variable = TempC()
    init() {
        variable.GetData()
    }
    var body: some View {
            Text("Hello World")
    }
}

Option 2

struct ContentView: View {

    let variable = TempC()

    var body: some View {
        Text("Hello World")
        .onAppear {
            self.variable.GetData()
        }
    }
}

Similarly you can call it in .onTapGesture or any other, pass reference to your class instance during initialising, etc.

backup

like image 132
Asperi Avatar answered Oct 08 '22 11:10

Asperi