2017-04-19 2 views
0

제가 또한 tableviewcontroller 상기 제 2 뷰 컨트롤러에 tableviewcontroller액세스 변수

var searchController:UISearchController? = nil 

override func viewDidLoad() { 
     super.viewDidLoad() 

     let locationSearchTable = storyboard!.instantiateViewController(withIdentifier: "SegueTableViewController") as! SegueTableViewController 
     searchController = UISearchController(searchResultsController: locationSearchTable) 
     searchController?.searchResultsUpdater = locationSearchTable 
} 

에서 선언 searchController 변수를 액세스하려는 또 다른 관점 제어기로부터 하나의 뷰 컨트롤러 선언, I는 액세스하려는 첫 번째보기 컨트롤러에서 searchController.

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     // #warning Incomplete implementation, return the number of rows 


     if searchController.isActive && searchController.searchBar.text != ""{ 
      return filteredUsers.count 
     } 
     return self.usersArray.count 

    } 
+0

앱이이 코드와 충돌합니다! Apple 개발자 웹 사이트로 이동하여 UISearchController 샘플 코드를 다운로드하십시오. – Mannopson

+0

현재 이런 식으로 작동하고 있습니다. @Mannopson – juelizabeth

답변

1

선언문을 ViewController 외부에 배치하여 전역 변수를 선언 할 수 있습니다. 나는이 해결책을 꼭 좋아하지는 않지만, 지금이 순간 내가 생각할 수있는 유일한 해결책이다.

+0

viewcontroller 외부에 배치하면 viewcontroller 변수에 액세스 할 수 없습니다. – juelizabeth

+0

실제로 제대로하지 못하고 마침내 해결 방법을 알아 냈습니다. 고마워요! – juelizabeth

1

두 개의보기 컨트롤러로 가져오고 일반적인 방법을 통해 변수에 액세스하는 공통 클래스를 만들 수도 있습니다.

다음은 매우 간단한 간단한 예입니다.

class centralDB: NSObject { 

    private var commonSpace: String 

    func returnSpace() -> String { 
    return commonSpace 
    } 

    func setSpace(blah: String) { 
    commonSpace = blah 
    } 
} 

centDB = centralDB() // This is a global variable in centralDB 

------- 

import centralDB 

class viewCon1 { 
    centDB.setSpace("viewCon1 set this") 
} 

----- 

import centralDB 

class viewCon2 { 
    centDB.returnSpace() 
    print variableInCommon // shoould output ViewCon1 
} 

초기 코드가 잘못되었다고 생각하여 편집했습니다. 당신은 내가 확신하는 아이디어를 얻을 수 있습니다.