如何在swift中从不同的类中获取textview的值

时间:2014-09-17 01:47:39

标签: ios swift uitextview

如果我有2个类,Test_TableViewController和TestCell_TableViewCell。 这是Test_TableViewController类中的代码

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类中输入的textarea值? 三江源

4 个答案:

答案 0 :(得分:1)

一个类不应该读取另一个类的UI元素。这表明您正在打破Cocoa所依赖的模型 - 视图 - 控制器架构。应该有一个模型对象来保存您想要的数据。您可以将整个对象从视图控制器传递到您的单元格。当用户修改文本区域时,单元格可以根据需要更新它,并且视图控制器将能够看到更改,因为它们都在查看相同的模型对象。

有关简介,请参阅Apple的Cocoa Core Competencies: Model-View-Controller

答案 1 :(得分:0)

将UITextView作为TestCell_TableViewCell的属性。然后,您可以使用TestCell_TableViewCell对象从Test_TableViewController访问UITextView。

编辑: 您可以将textview声明为TableViewCell类的变量。

var cellTextView:UITextView

然后您可以通过

访问文本值
tableViewCell.cellTextView.text

tableViewCell是您的类TestCell_TableViewCell的对象。

答案 2 :(得分:0)

如何使用ivar来保留对textarea的引用?

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

答案 3 :(得分:0)

  1. 如果cellForRowAtIndexPath()正在返回动态单元格(例如),请不要在其中添加或删除子视图,也不要在其调用的任何方法中添加或删除子视图。
  2. @hAnthony Kong的回答是正确的 - 让UITextView成为@IBOutlet的单元格,然后你的桌子可以通过单元格访问它。