gpt4 book ai didi

iphone - 自定义 UITableViewCell 中的 NSNotification 观察者?

转载 作者:行者123 更新时间:2023-11-29 11:12:06 38 4
gpt4 key购买 nike

我正在构建一个具有类似 iPod 控件(播放、暂停等)的应用程序。该应用程序有 tableView,每个单元格中都有轨道名称。我有一个带有 UITableView 和自定义 UITableViewCell 类的 MainViewController。播放器控件存在于 MainViewController 中。

我在每个单元格中还有一个播放/暂停按钮。我已成功设置 NSNotifications 以在单元格中按下播放按钮时发布通知,因此轨道信息将发送到 MainViewController 中的观察者和响应者方法,并且播放器控件(由 MPMoviePlayerController 驱动)已启动。

这行得通,但是一旦播放轨道,我就无法弄清楚如何使单元格中的播放/暂停按钮“镜像”我的 iPod 控件中播放/暂停按钮的状态。我不认为在每个单元格中添加一个 NSNotification observer 是正确的做法。

附加信息:MainViewController 播放器中的播放/暂停按钮图像由每半秒触发一次并检查 MPMoviePlayerController 的playbackstate 的方法确定。如果正在播放,则播放器按钮设置为播放图像。如果暂停,则设置为暂停图像。我认为设置 tableCell 播放/暂停按钮的实现也将放在此处。

编辑 在我的 UITableViewController 中,只要播放状态发生变化(通过 NSNotification),就会调用此方法。 (playButton 是播放器控件中的播放/暂停按钮,而不是我尝试根据播放状态更新的表格单元格中的播放/暂停按钮)。

- (void) updateViewForPlayerState
{
// Change playButton image depending on playback state
[playButton setImage:((moviePlayer.playbackState == MPMoviePlaybackStatePlaying) ? pauseBtnBG : playBtnBG) forState:UIControlStateNormal];

}

最佳答案

Apple 开发网站上提供了一个很好的示例,说明您正在尝试做什么。

TableViewSuite

有问题的项目称为 CustomTableViewCell。该项目使用 Timer 定期更新单元格,根据您的描述,这听起来像是您在做类似的事情。

当单元格的状态发生变化时,执行以下操作。

  1. 更新单元格的状态。我假设这反射(reflect)在 plabackstate
  2. 调用[cell setNeedsDisplay]

这应该会强制自定义单元格以您设置的新状态重新绘制自身。

这将在您的 TableView Controller 中的计时器回调方法中

NSArray *visibleCells = self.tableView.visibleCells;
for (CustomCell *cell in visibleCells) {
[cell redisplay];
}

这将在您的自定义表格 View 单元格中

- (void)redisplay {
[customCellView setNeedsDisplay];
}

关于iphone - 自定义 UITableViewCell 中的 NSNotification 观察者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11055963/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com