如何在 Swift Twitterkit 中继承 TWTRTweetTableViewCell?
How to subclass TWTRTweetTableViewCell in Swift Twitterkit?
我正在尝试找出是否可以从 TwitterKit 库中 subclass TWTRTweetTableViewCell
。到目前为止,我的自定义单元格 class 继承自 TWTRTweetTableViewCell
。 xib 中有一个 UIView,它有一个单元格 class 的出口,并且 UIView class 设置为
TWTRTweetView
。像这样-
class UserTweetViewCell: TWTRTweetTableViewCell {
@IBOutlet weak var tweetViewCustom: TWTRTweetView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
属性检查器中的单元格class设置为UserTweetViewCell
,单元格中UIVIew的class设置为TWTRTweetView
。
在主视图控制器中我有这个
tableView.register(UserTweetViewCell.self, forCellReuseIdentifier: tweetTableReuseIdentifier)
然后
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let tweet = tweetsarr[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: tweetTableReuseIdentifier, for: indexPath) as! UserTweetViewCell
cell.tweetViewCustom.showActionButtons = false
cell.tweetViewCustom.linkTextColor = UIColor(red:0.12, green:0.53, blue:0.90, alpha:1.0)
cell.tweetViewCustom.configure(with: tweet as? TWTRTweet)
cell.tweetViewCustom.theme = .light
cell.tweetViewCustom.delegate = self
return cell
}
但是,我在第 cell.tweetViewCustom.showActionButtons = false
行遇到错误,错误是 Unexpectedly found nil while unwrapping an Optional value
。我在这里错过了什么?
I wanted to Subclass TWTRTweetTableViewCell so that I could add the likes count, retweets count, reply button etc. so far it hasn't worked. So next I am going to give it a try Subclassing TWTRTweetView and use that in the tableview cell instead. I think I have tried it once with partial success. The challenge is the tweet height
这就是我在 Objective-c 中计算推文高度的方式:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
TWTRTweet * tweet = self.tweets[indexPath.row];
if (self.tweets.count > indexPath.row) {
[self.prototypeCell configureWithTweet:tweet];
}
CGFloat tweetHeight = [CustomTweetTableViewCell heightForTweet:tweet style:TWTRTweetViewStyleCompact width:[tableView bounds].size.width showingActions:YES];
self.tweetHeights[indexPath.row] = [NSNumber numberWithFloat:tweetHeight];
return tweetHeight;
}
我终于做到了,效果非常好。诀窍是 不是 到 subclass TWTRTweetTableViewCell
而是只是 subclass 常规 UITableViewCell
并使用 TWTRTweetView
在里面。这基本上就是 TWTRTweetTableViewCell
所做的,它有 tweetView
属性 本质上是 TWTRTweetView
类型的 IBOutlet
。自定义单元格 Nib
应包含一个 UIView
,其中 TWTRTweetView
设置为身份检查器中的 class。这是代码-
class CustomTweetCell: UITableViewCell{
@IBOutlet weak var customTweetView: TWTRTweetView!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
func configureCell(with tweet: TWTRTweet){
self.customTweetView.showActionButtons = false
self.customTweetView.configure(with: tweet)
}
}
对于cell的高度,需要对tableview进行如下操作-
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let tweet = tweets[indexPath.row]
let tweetheight = TWTRTweetTableViewCell.height(for: tweet as! TWTRTweet, style: .compact, width: self.view.frame.width, showingActions: false) + 30 //this 30 should be the height of any additional views that you put in the cell Nib file
return tweetheight
}
注意:使用 TWTRTweetView
和您可能拥有的任何其他视图在 tableview 单元格中启用自动布局约束非常重要,并确保 Table view cell row height
设置为默认或空白在单元格的大小 inspector.Failing 中这样做会弄乱推文视图高度,并会导致不良结果。
我正在尝试找出是否可以从 TwitterKit 库中 subclass TWTRTweetTableViewCell
。到目前为止,我的自定义单元格 class 继承自 TWTRTweetTableViewCell
。 xib 中有一个 UIView,它有一个单元格 class 的出口,并且 UIView class 设置为
TWTRTweetView
。像这样-
class UserTweetViewCell: TWTRTweetTableViewCell {
@IBOutlet weak var tweetViewCustom: TWTRTweetView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
属性检查器中的单元格class设置为UserTweetViewCell
,单元格中UIVIew的class设置为TWTRTweetView
。
在主视图控制器中我有这个
tableView.register(UserTweetViewCell.self, forCellReuseIdentifier: tweetTableReuseIdentifier)
然后
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let tweet = tweetsarr[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: tweetTableReuseIdentifier, for: indexPath) as! UserTweetViewCell
cell.tweetViewCustom.showActionButtons = false
cell.tweetViewCustom.linkTextColor = UIColor(red:0.12, green:0.53, blue:0.90, alpha:1.0)
cell.tweetViewCustom.configure(with: tweet as? TWTRTweet)
cell.tweetViewCustom.theme = .light
cell.tweetViewCustom.delegate = self
return cell
}
但是,我在第 cell.tweetViewCustom.showActionButtons = false
行遇到错误,错误是 Unexpectedly found nil while unwrapping an Optional value
。我在这里错过了什么?
I wanted to Subclass TWTRTweetTableViewCell so that I could add the likes count, retweets count, reply button etc. so far it hasn't worked. So next I am going to give it a try Subclassing TWTRTweetView and use that in the tableview cell instead. I think I have tried it once with partial success. The challenge is the tweet height
这就是我在 Objective-c 中计算推文高度的方式:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
TWTRTweet * tweet = self.tweets[indexPath.row];
if (self.tweets.count > indexPath.row) {
[self.prototypeCell configureWithTweet:tweet];
}
CGFloat tweetHeight = [CustomTweetTableViewCell heightForTweet:tweet style:TWTRTweetViewStyleCompact width:[tableView bounds].size.width showingActions:YES];
self.tweetHeights[indexPath.row] = [NSNumber numberWithFloat:tweetHeight];
return tweetHeight;
}
我终于做到了,效果非常好。诀窍是 不是 到 subclass TWTRTweetTableViewCell
而是只是 subclass 常规 UITableViewCell
并使用 TWTRTweetView
在里面。这基本上就是 TWTRTweetTableViewCell
所做的,它有 tweetView
属性 本质上是 TWTRTweetView
类型的 IBOutlet
。自定义单元格 Nib
应包含一个 UIView
,其中 TWTRTweetView
设置为身份检查器中的 class。这是代码-
class CustomTweetCell: UITableViewCell{
@IBOutlet weak var customTweetView: TWTRTweetView!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
func configureCell(with tweet: TWTRTweet){
self.customTweetView.showActionButtons = false
self.customTweetView.configure(with: tweet)
}
}
对于cell的高度,需要对tableview进行如下操作-
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let tweet = tweets[indexPath.row]
let tweetheight = TWTRTweetTableViewCell.height(for: tweet as! TWTRTweet, style: .compact, width: self.view.frame.width, showingActions: false) + 30 //this 30 should be the height of any additional views that you put in the cell Nib file
return tweetheight
}
注意:使用 TWTRTweetView
和您可能拥有的任何其他视图在 tableview 单元格中启用自动布局约束非常重要,并确保 Table view cell row height
设置为默认或空白在单元格的大小 inspector.Failing 中这样做会弄乱推文视图高度,并会导致不良结果。