【问题标题】:reloadData not triggering cellForRowAtIndexPathreloadData 没有触发 cellForRowAtIndexPath
【发布时间】:2013-12-30 00:29:13
【问题描述】:

我有一个 UIViewController,里面有一个 UITableView。表格视图包含可以由应用程序的其他部分更改的收藏夹列表。我正在使用 NSNotificationCenter 来触发表视图的 reloadData 方法。表格视图有一个出口声明如下:

@property (strong,nonatomic) IBOutlet UITableView *faveTableView;

合成如下:

@synthesize faveTableView;

表视图的delegate和datasource属性在视图控制器的viewDidLoad中设置如下:

[self.faveTableView setDataSource:self];
[self.faveTableView setDelegate:self];

NSNotificationCenter 会触发以下方法:

-(void)reloadNotificationReceived{
    [self loadData];
    [self.faveTableView reloadData];
}

loadData 更新作为托管对象的 NSMutableArray 的数据源,并且正常工作。

当视图控制器加载时, cellForRowAtIndexPath 会被触发。但是,当收到通知时,会触发 reloadNotificationReceived 并触发两个表视图委托方法(numberOfRowsInSection 和 numberOfSectionsInTableView)。但是,不会触发 cellForRowAtIndexPath。 numberOfRowsInSection 返回正确的项目数。

谁能提供一个为什么 cellForRowAtIndexPath 没有在这里被解雇的原因?谢谢!

【问题讨论】:

  • 也许numberOfSectionsInTableView: 返回一,而numberOfRowsInSection: 返回零?
  • 您确定 numberOfRowsInSection 返回的计数大于 0 吗?
  • 你返回的行数是多少?
  • 如果在发送通知时您的表不可见,则运行时可能会完全跳过更新表。您的应用中会出现这种情况吗?
  • 是的,numberOfRows 正在返回正确数量的项目。我将编辑原始帖子以反映这一点

标签: objective-c xcode5 uitableview


【解决方案1】:

你返回的行数是0。

【讨论】:

    【解决方案2】:

    也许您已将 tableview 的委托/数据源设置为情节提要/xib 中的控制器,但您尚未连接控制器的“faveTableView”tableview IBOutlet... 如果 del/datasource已设置,则它将成功从控制器获取数据,但如果没有设置 IBOutletself.faveTableView 将保持为零,因此 [self.faveTableView reloadData] 不会做任何事情。在您的viewDidLoad 中放置一个断点并检查self.faveTableView 是否不为零...

    【讨论】:

    • 如果我错了,请纠正我,但如果委托/数据源设置不正确,表格视图将不会在其初始加载时加载数据。但是,最初加载视图时,一切正常
    • 正如我所写的“您已设置委托/数据源”.. 所以是的,我们在同一页面上.. 我的意思可能是 IBOutlet self.faveTableView 尚未设置.另请注意:[self.faveTableView setDataSource:self]; [self.faveTableView setDelegate:self];如果 IBOutlet 没有连接起来,什么都不做,这就是为什么我建议委托/数据源已经从 storyboard/xib 连接起来
    • 不,我已经验证它们肯定是在故事板中连接起来的
    • 你检查过 self.faveTableView 不是 nil 吗?
    • 不,self.faveTableView 不是 nil
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多