PageViewController 中的 UITableViewCell 表现不同

Posted

技术标签:

【中文标题】PageViewController 中的 UITableViewCell 表现不同【英文标题】:UITableViewCell inside PageViewController behaving differently 【发布时间】:2016-03-05 16:50:56 【问题描述】:

我将工作 tableviewcontroller 放在 pageviewcontroller 中。现在我必须以编程方式在表格视图中注册单元格,并且不会为单元格调用方法 awakeFromNib。如果我尝试设置内容,我的自定义单元格中的所有属性都未初始化,并且应用程序崩溃。

当我在 pageviewcontroller 中添加 tableviewcontroller 时有什么不同吗?

self.tableView.registerClass(ParticipantCell.self, forCellReuseIdentifier: ParticipantCell.cellIdentifier)

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 

    let index = self.sections[indexPath.section].index+indexPath.row

    let participant = self.participants[index]

    let cell = tableView.dequeueReusableCellWithIdentifier(ParticipantCell.cellIdentifier, forIndexPath: indexPath) as! ParticipantCell

   // cell.setParticipantData(participant)


    return cell

【问题讨论】:

【参考方案1】:

如果您以编程方式创建单元格,则不会调用 awakeFromNib。但是,您可以通过覆盖来进行配置:

init(style: UITableViewCellStyle, reuseIdentifier: String?)

作为建议,您可以使用这样的方法:

override init(style: UITableViewCellStyle, reuseIdentifier: String?) 
    super.init(style: style, reuseIdentifier: reuseIdentifier)
    setupCell()


required init?(coder aDecoder: NSCoder) 
    super.init(coder: aDecoder)
    setupCell()


func setupCell() 
    // setup your cell here

【讨论】:

所以我必须以编程方式添加每个控件?一切都在 IB 中定义 通过从情节提要加载视图控制器来更改此行为。现在我不需要注册单元并从笔尖唤醒被调用。但属性仍然为零 我会仔细检查情节提要中的所有元素是否与您的类属性相关联,并且我会仔细检查您是否仅在创建/绘制单元格后引用属性(我已经之前在元素生命周期的错误时间引用元素的错误)。例如,如果你在 viewController 的 viewDidLoad 方法中引用了一个 UILabel,那么它就是 nil。在创建 nib/storyboard 后,必须在 viewWillAppear/viewDidAppear 中操作标签。【参考方案2】:

问题是 Tableviewcontroller 实例化错误。我通过从情节提要中实例化它来解决它:

let storyboard = UIStoryboard(name: "Participants", bundle: NSBundle.mainBundle())

if let controller = storyboard.instantiateViewControllerWithIdentifier("ParticipantListController") as? ParticipantListController
...

【讨论】:

以上是关于PageViewController 中的 UITableViewCell 表现不同的主要内容,如果未能解决你的问题,请参考以下文章

如何移动到 pageViewController 中的特定页面?

PageViewController 中的 UITableViewCell 表现不同

(Swift) 如何使用触摸按钮更改 pageviewcontroller 中的视图

pageviewcontroller 中的 PageCurlEffect 与工具栏重叠

从加载它的 ViewController 调用详细 PageViewController 中的函数

从加载它的 ViewController 调用详细 PageViewController 中的函数