2016-10-18 6 views
0

PropertiesViewController.swift에서 5 개의 UITextField 값을 가져오고 ConditionsViewController에서 8 개의 스위치를 가져 오려고합니다. 두 클래스 모두 TabController의 일부입니다. 사용자가 saveMeter()를 클릭하면 사용자가 CoreData에 입력 한 값을 삽입하려고합니다. 내 문제는 모든 CRUD 작업이있는 다른 클래스에서 두보기 모두에 액세스하려고 할 때입니다. Properties 또는 ConditionsViewController에서 저장 버튼을 누르면 텍스트를 입력하고 값을 입력해도 스위치 값이 반환되지 않습니다. 런타임에 다른 클래스의 UITextFields (첫 번째 클래스) 및 스위치 (두 번째 클래스) 값 가져 오기

init(){ 

/PropertiesViewController

:

클래스 CRUDController : UIViewController에 {

VAR 조건 : ConditionsViewController

VAR 속성

클래스는 여기 CRUDController 이름하고는 반드시 중요한 코드입니다/아래에서 원래 인스턴스가 아닌 새 인스턴스를 생성하고 있음을 이해했습니다.

// 내가 그들을 초기화하기 위해 신속하게 나를 강제하고 나는 그것을 할 다른 방법을 모른다.

// VAR 조건 : ConditionsViewController var에 속성 :

// 함수 saveMeter에서하지만 텍스트의 값은 여전히 ​​null 인 PropertiesViewController

는 // 나는이처럼 그들을 참조 노력했다.

conditions = ConditionsViewController() 
    properties = PropertiesViewController() 

    super.init(nibName: nil, bundle:nil) 

} 

required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 

FUNC의 saveMeter() {

//conditions.setConditions() 
    //properties.setProperties() 

     //creating empty meter 
     let m1 = Meter(context: MOC) 

//이이었다 내가 Coredata에서 미터 개체에 대한 값을 설정하고있다

 //conditions values 
     m1.newMeterCond1 = conditions.newMeterCond1Val 
     m1.newMeterCond2 = conditions.newMeterCond2Val 
     m1.newMeterCond3 = conditions.newMeterCond3Val 
     m1.oldMeterCond1 = conditions.oldMeterCond1Val 
     m1.oldMeterCond2 = conditions.oldMeterCond2Val 
     m1.oldMeterCond3 = conditions.oldMeterCond3Val 
     m1.oldMeterCond4 = conditions.oldMeterCond4Val 
     m1.oldMeterCond5 = conditions.oldMeterCond5Val 
     m1.cnc = conditions.CNCVal 

     //properties values     
     m1.outKW = properties.OutKWFromTextField 
     m1.outKWH = properties.OutKWHFromTextField 
     m1.outKVARH = properties.OutKVARHFromTextField 
     m1.multiplier = properties.multiplierFromTextField 
     m1.newMeterNumber = properties.newMeterNumberFromTextField 


     APPD.saveContext() 

} 

} 여기

있습니다 수업은 텍스트 필드와 스위치를 얻고 있습니다 :

클래스 ConditionsViewController :의 UIViewController {

//variables to set 

var newMeterCond1Val = Bool() 
var newMeterCond2Val = Bool() 
var newMeterCond3Val = Bool() 
var oldMeterCond1Val = Bool() 
var oldMeterCond2Val = Bool() 
var oldMeterCond3Val = Bool() 
var oldMeterCond4Val = Bool() 
var oldMeterCond5Val = Bool() 
var CNCVal = Bool() 

@IBOutlet weak var oldMeterNumber: UILabel! 
@IBOutlet weak var newMeterNumber: UILabel! 
var oldMeterFromCell = String() 
var newMeterFromTabChild = String() 

//old meter conditions 
@IBOutlet weak var oldMeterCond1: UISwitch! 
@IBOutlet weak var oldMeterCond2: UISwitch! 
@IBOutlet weak var oldMeterCond3: UISwitch! 
@IBOutlet weak var oldMeterCond4: UISwitch! 
@IBOutlet weak var oldMeterCond5: UISwitch! 

//new meter conditions 
@IBOutlet weak var newMeterCond1: UISwitch! 
@IBOutlet weak var newMeterCond2: UISwitch! 
@IBOutlet weak var newMeterCond3: UISwitch! 


@IBOutlet weak var CNC: UISwitch! 

@IBAction func saveMeter(_ sender: AnyObject) { 

    //this is where I am calling the function from CRUDController 
    CRUD.saveMeter() 
} 

}

클래스 PropertiesViewController : UIViewController에, UITextFieldDelegate {

var oldMeterFromCell = String() 

//variables to set 
var OutKWHFromTextField = Float() 
var OutKWFromTextField = Float() 
var OutKVARHFromTextField = Float() 
var newMeterNumberFromTextField = String() 
var multiplierFromTextField = Float() 

@IBOutlet weak var OldMeterLabel: UILabel! 

//new meter properties 
@IBOutlet weak var OutKWH: UITextField! 
@IBOutlet weak var OutKW: UITextField! 
@IBOutlet weak var OutKVARH: UITextField! 
@IBOutlet weak var newMeterNumber: UITextField! 
@IBOutlet weak var multiplier: UITextField! 

}

나는 각에서의 UITextField와 스위치를 초기화 시도 init()과 init()이 필요한 클래스들, 나는 또한 conve nience init(), 나는 또한 사용자 정의 함수를 사용하여 그것들을 초기화했다. CRUDController 클래스에서 두 클래스 모두에 대한 인스턴스를 만들었지 만 저장 버튼을 눌렀을 때 텍스트 값이 되돌아 오지 않습니다. 나는 2 개의 전망이 있고 나가 할 수 있더라도 나는 싶지 않다 때문에 segue를 사용할 수 없다.원래 PropertiesController 및 ConditionsController에 대한 액세스 권한이 CRUDController 클래스에서 필요하며 위임 개념과 문제가 해결되도록 CODE를 필요로하는 방법을 매우 혼란스럽게 처리하는 방법을 모릅니다. 아니오 개념

답변

0

이 문제를 해결할 수있는 유일한 방법은 StoryBoard의 다른보기에서 모든 스위치, UITextfields, 작업 등을 모든 요소에 액세스 할 수있는 단일 클래스에 연결하는 것입니다. 이렇게하면 다른 클래스에 액세스하기 위해 하나의 클래스를 인스턴스화 할 필요가 없습니다.