如果我有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值? 三江源
答案 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)
cellForRowAtIndexPath()
正在返回动态单元格(例如),请不要在其中添加或删除子视图,也不要在其调用的任何方法中添加或删除子视图。UITextView
成为@IBOutlet
的单元格,然后你的桌子可以通过单元格访问它。