在另一个视图上,我具有此函数(如下),该函数根据给定条件对TextView对象进行实时单词计数,然后将其显示在标签上。我想对我的TableView单元格做同样的事情。但是,此功能显然无法使用,因为它需要从要从中进行计数的单元格中获取“ savedHashtagTextView”(textView)和“ hashtagCount”(label)字段。我不确定确切如何进行这项工作。请帮忙-我已经坚持了几个小时!
func textViewDidChange(_ textView: UITextView) {
let components = savedHashtagTextView.text.components(separatedBy: "#")
hashtagCount.text = String(components.count)
if hashtagCount.text == "0" {
hashtagCount.text = ""
}
}
答案 0 :(得分:2)
您将要使用class App extends React.Component {
constructor(props) {
super(props)
this.state = {
inputvalue : ''
}
}
render() {
return (
<div className="hello">
<Input
placeholder="Title 1" />
<br/>
<Input placeholder="Title 2" />
<br/>
<Input placeholder="Title 3" />
<br/>
<Input placeholder="Title 4" />
<br/>
<button>Get value</button>
</div>
)
}
}
class Input extends React.Component {
constructor(props) {
super(props)
this.state = {
inputvalue: ''
}
}
handleChange(e) {
this.setState({
inputvalue: e.target.value
})
}
render() {
return (
<input
type="text"
placeholder={this.props.placeholder}
value={this.state.inputvalue}
onChange={this.handleChange.bind(this)}
/>
)
}
}
ReactDOM.render(<App />, document.querySelector("#app"))
协议创建自定义UITableViewCell
对象,以便获得特定UITextViewDelegate
UITableViewCell
的字数。此外,您将需要以某种方式将字数发送到UITextView
,以便您可以更新字数ViewController
。您可以通过创建自己的UILabel
协议(需要一个CustomCellDelegate
函数,然后在updateWordCount()
中使用此协议)来实现此目的。
更新字数后,您现在要使用ViewController
协议调用updateWordCount()
中的ViewController
函数。
作为示例,您将要执行以下操作:
按如下所示创建CustomCell.swift文件:
CustomCellDelegate
现在,在情节提要中创建自定义单元格,并为其使用// Create the protocol
protocol CustomCellDelegate {
func updateWordCount(count: Int)
}
class CustomCell: UITableViewCell, UITextViewDelegate {
// Your UITextView
@IBOutlet weak var textView: UITextView!
// The cells delegate -- which we will set to self when initiated
var delegate: CustomCellDelegate?
func textViewDidChange(_ textView: UITextView) {
// Get the word count here
let wordCount = 10
// Now we call the delegate to send the wordCount to the ViewController
delegate?.updateWordCount(count: wordCount)
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
textView.delegate = self
}
}
类,并将其CustomCell
设置为“ CustomCell”。另外,请确保将identifier
链接到UITextView
类中的插座。
现在位于CustomCell
中的ViewController
中:
UITableView
警告:此代码未经测试,我将其全部写在StackOverflow上。可能会有语法错误,但是除了一些潜在的语法错误之外,这还是可以的。
编辑:
根据您的评论,单词计数标签位于单元格中。这意味着我们不再需要// Use the CustomCellDelegate protocol here
class YourViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, CustomCellDelegate {
@IBOutlet weak var wordCountLabel: UILabel!
// This is the function required by the CustomCellDelegate
func updateWordCount(count: Int) {
wordCountLabel.text = "Word Count: \(count)"
}
// Set up the custom Cell
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomCell
// Setup the delegate
cell.delegate = self
return cell
}
}
协议,并且可以进行一些较小的更改以使此工作生效。
CustomCell.swift:
CustomCellDelegate
确保同时使用class CustomCell: UITableViewCell, UITextViewDelegate {
// Your UITextView
@IBOutlet weak var textView: UITextView!
// Your Label
@IBOutlet weak var yourLabel: UILabel!
func textViewDidChange(_ textView: UITextView) {
// Get the word count here
let wordCount = 10
// Change the wordCount labels text
yourLabel.text = "Word Count: \(wordCount)"
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
textView.delegate = self
}
}
中的两个插座。
您的CustomCell
:
ViewController