UITableViewController与UIViewController的区别


初入iOS开发,在使用TableView 的时候,发现有两种创建 ViewController 的方式。


方式一:直接继承自 UIViewController


#import <UIKit/UIKit.h>

@interface FisrtViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>

@end

 
 

方法二:继承自 UIViewController

#import <UIKit/UIKit.h>

@interface FirstViewController : UITableViewController

@end


两者的区别在于,UITableViewController 帮忙做了一些 UIViewController 没有做的事情,如下:


  1. Defines and setups up theUITableView.
  2. Sets itself as the table view's data source and delegate.
  3. Overrides thesetEditing:animated: method to also set theediting property of the table view.
  4. Deselects the last selected row in theviewWillAppear: method depending on theclearsSelectionOnViewWillAppear property.
  5. Flashes the table view's scrollbars in the viewDidAppear: method.
  6. Hooks up the refresh control (as of iOS 6).
  7. Reloads the table view the first time it's loaded.
  8. Adjusts the table view'scontentInset (as of iOS 7).
  9. Scrolls the table view as needed when the keyboard appears.

那么,什么时候该使用UIViewController呢?

  1. You need the table view to be inside another view.
  2. You need to add additional views to the view controller that don't scroll with the table view (though there are ways to solve this with UITableViewController).

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,您需要将 YYLabel 添加到 UITableViewCell 中。 您可以通过在 UITableViewCell 子类中创建 YYLabel 实例并将其添加到 contentView 中来完成此操作。 您可以使用自动布局或手动布局将 YYLabel 放置在所需的位置上。 接下来,您需要创建 NSMutableAttributedString,其中包含 UITextView 和其他文本。 然后,您可以使用 NSMutableAttributedString 的 insert 方法将 UITextView 作为附件添加到文本中。 以下是一个示例代码片段: ```swift let textView = UITextView(frame: CGRect(x: 0, y: 0, width: 100, height: 50)) textView.text = "This is a UITextView" let attachment = NSTextAttachment() attachment.bounds = CGRect(x: 0, y: 0, width: 100, height: 50) attachment.setAttachmentContent(textView) let attributedString = NSMutableAttributedString(string: "This is a YYLabel with a UITextView attachment") attributedString.insert(NSAttributedString(attachment: attachment), at: 21) yyLabel.attributedText = attributedString ``` 最后,您需要处理 UITextView 和 UITableView 之间的交互。您需要将 UITextView 的 isEditable 属性设置为 false,以防止用户编辑文本。您还需要在 UITableViewDelegate 中实现 heightForRowAt 和 estimatedHeightForRowAt 方法来动态计算 UITableViewCell 的高度,以适应包含 UITextView 的 YYLabel。 以下是一个示例 UITableViewDelegate 实现: ```swift class MyTableViewController: UITableViewController { override func viewDidLoad() { super.viewDidLoad() tableView.register(MyTableViewCell.self, forCellReuseIdentifier: "cell") } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! MyTableViewCell // Configure the cell... return cell } override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! MyTableViewCell cell.configure(with: "This is a YYLabel with a UITextView attachment") return cell.systemLayoutSizeFitting(CGSize(width: tableView.frame.width, height: UIView.layoutFittingCompressedSize.height)).height } override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { return UITableView.automaticDimension } } ``` 请注意,此示例实现了一个名为 MyTableViewCell 的 UITableViewCell 子类,该子类包含一个名为 yyLabel 的 YYLabel 实例。 该子类还实现了一个名为 configure(with:) 的方法,该方法接受一个字符串参数,并在 YYLabel 中设置带有 UITextView 附件的 NSMutableAttributedString。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值