我试图找出是否可以从TwitterKit库中继承TWTRTweetTableViewCell
。到目前为止,我的自定义单元类继承自TWTRTweetTableViewCell
。 xib中有一个UIView,它有一个单元类的出口,UIView类被设置为
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
}
}
属性检查器中的单元格类设置为UserTweetViewCell
,单元格中的UIVIew类设置为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
。我在这里缺少什么?
答案 0 :(得分:1)
我终于做到了,它的工作就像一个魅力。诀窍是不到子类Button x = findViewById(R.id.TextFieldHere);
,而只是将常规TWTRTweetTableViewCell
子类化并在其中使用UITableViewCell
。这基本上是TWTRTweetView
的作用,它具有TWTRTweetTableViewCell
属性,本质上是tweetView
类型IBOutlet
。自定义单元格TWTRTweetView
应包含Nib
,并在身份检查器中设置UIView
作为其类。这是代码 -
TWTRTweetView
对于单元格的高度,需要对tableview进行以下操作 -
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)
}
}
注意:在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
设置为默认或空白单元格的大小检查器。如果这样做会弄乱推文视图高度并导致不良结果。
答案 1 :(得分:0)
我想要Subtrlass TWTRTweetTableViewCell,以便我可以添加喜欢计数,转发计数,回复按钮等等到目前为止它还没有工作。接下来我将尝试对子类化TWTRTweetView进行子类化,并在tableview单元格中使用它。我想我曾经尝试过一次并获得了部分成功。挑战是推文高度
这就是我在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;
}