2014-09-17 2 views
0

두 개의 클래스가있는 경우, Test_TableViewController 및 TestCell_TableViewCell. 이 클래스 Test_TableViewController신속한 다른 클래스에서 textview의 값을 얻는 방법

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell: TestCell_TableViewCell = tableView.dequeueReusableCellWithIdentifier("celltest", forIndexPath: indexPath) as TestCell_TableViewCell 

cell.generalcontent() 
} 

의 코드는 이것은 클래스 TestCell_TableViewCell 코드

var textarea = UITextView(frame: CGRect(x: 10, y: 10, width: 300, height: 180)) 
func generalcontent() 
{ 
    self.addSubview(textarea) 
} 

어떻게 Test_TableViewController 클래스에서 사용자가 입력 한 텍스트 영역의 값을 얻는 방법? 감사합니다.

답변

0

UITextView를 TestCell_TableViewCell의 속성으로 설정하십시오. 그런 다음 TestCell_TableViewCell 개체를 사용하여 Test_TableViewController에서 UITextView에 액세스 할 수 있습니다.

편집 : Textview를 TableViewCell 클래스의 변수로 선언 할 수 있습니다.

var cellTextView:UITextView 

그런 다음

tableViewCell.cellTextView.text 

tableViewCell하여 텍스트 값에 액세스 할 수 있습니다 당신의 클래스 TestCell_TableViewCell의 개체입니다.

+0

당신은 더 명확하게 설명 할 수 있습니까? –

+0

추가 설명이 추가되었습니다. –

0

텍스트 영역에 대한 참조를 유지하기 위해 ivar를 사용하는 것이 어떻습니까?

var textarea:UITextView? 

func generalcontent() 
{ 
    self.textarea = UITextView(frame: CGRect(x: 10, y: 10, width: 300, height: 180)) 
    self.addSubview(self.textarea) 
} 

그런 다음 Test_TableViewController 당신은 수행하여 값을 얻을 수 있습니다 :

cell.textarea.value 
1

한 클래스는 다른 클래스의 UI 요소를 읽을해야합니다. 이는 코코아가 의존하는 Model-View-Controller 아키텍처를 깨뜨리고 있음을 나타냅니다. 원하는 데이터를 보유하는 모델 객체가 있어야합니다. 전체 개체를보기 컨트롤러에서 셀로 전달할 수 있습니다. 셀은 사용자가 텍스트 영역을 수정하면서 필요에 따라 셀을 업데이트 할 수 있으며, 뷰 컨트롤러는 둘 다 동일한 모델 객체를보고 있기 때문에 변경 사항을 볼 수 있습니다.

소개는 Apple Cocoa Core Competencies: Model-View-Controller을 참조하십시오.

0
  1. cellForRowAtIndexPath() 경우 (귀하의 예처럼), 추가하거나에서 파단을 제거하거나 호출하는 방법으로하지 않는 동적 셀을 반환합니다.
  2. @hAnthony Kong의 대답은 정확합니다. UITextView을 셀의 @IBOutlet으로 만든 다음 테이블을 통해 셀에 액세스 할 수 있습니다.
관련 문제