0

这似乎很荒谬,但我似乎无法解决。我需要在表格视图中插入一行以响应推送通知。实现应该很简单

- (void)didSaveMessage:(Message*)message atIndex:(int)index
{
//check to make sure I have an array to populate the table from...
    if (self.messageManager.messages != nil)
    {   
        self.indexRow = index;
        NSLog(@"refresh table view from code");
        //remove a label that says "You have no messages"...
        [[messageTable tableFooterView] removeFromSuperview];

        [messageTable beginUpdates];
        [messageTable insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:index inSection:0]] 
                            withRowAnimation:UITableViewRowAnimationFade];
        [messageTable endUpdates];

        [self scrollToNewestMessage];

    }
}

当我收到远程通知并且它触发时调用此方法。日志语句打印。但是,UITableView 不会更新。对我来说特别奇怪的是,如果我将相同的代码放在 IBAction 中并将其链接到情节提要中的刷新按钮,它就可以工作。以编程方式更新 UITableView 是否需要做一些特别的事情?

4

3 回答 3

1

尝试向表格发送reloadData消息。这应该强制表视图更新。

于 2012-04-13T22:45:05.740 回答
0

这似乎很简单,但是您传递给 didSaveMessage 的 Message* 是否有可能为零?它将解释为什么 NSLog 语句有效,并且我假设您在从 IBAction 进行测试时必须手动创建消息。

于 2012-04-14T00:55:54.737 回答
0

这解决了。我在 AppDelegate 中调用了从 didReceiveRemoteNotification: 更新 UI 的方法,但更新到了我的视图控制器的不同实例。所以我在应用程序委托上添加了一个 viewController 属性,在我的视图控制器的视图中设置它的值确实加载了,现在一切正常。

于 2012-04-17T19:24:09.210 回答