在UITableView上重新加载数据

时间:2011-03-28 13:10:36

标签: iphone objective-c cocoa-touch uitableview

如何在UITableView类中重新加载。

我正在使用reloadData方法,但它无效。

- (id)initWithCoder:(NSCoder *)coder
{
     if (self = [super initWithCoder:coder]) 
    {
        [self init];
    }
    return self;
}

-(id)init
{   

    appdelegate=[[UIApplication sharedApplication]delegate];
    [appdelegate readLiteratureFromDatabase];
    tbl_obj.backgroundColor=[UIColor clearColor];
    tbl_obj.delegate = self;
    tbl_obj.dataSource = self;  
    [tbl_obj reloadData];
    array_content = [[NSMutableArray alloc] init];

    return self;
}

这里的init方法调用另一个类。所以当时表没有重新加载。

请帮忙!

4 个答案:

答案 0 :(得分:1)

可能是您可能没有将DataSourceDelegate附加到您的XIB

您可以使用以下代码执行此操作:

self.tableView.delegate = self;
self.tableView.datasource = self;

您还必须按如下方式添加:

@interface <YourViewControllerName>:UIViewController <UITableViewDelegate,UITableViewDataSource>

编辑:

但是你应该试着理解你的控件如UITableView不能直接调用并设置到你的UIView类中。

它应该是UIViewController才有可能将数据添加并填充到TableView中。

所以你的选择是调用数据委托和数据源方法以及ViewController上的reloadData,它作为这个UIView的parentView。

所以,除非你这样做,我担心这是不可能的。

希望这会对你有所帮助。

答案 1 :(得分:1)

从查看代码看,您确实需要阅读此内容;

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html

你不应该有一个名为init的方法,它不会调用超级方法,最终会使事情发生变化。

docs ivar设置为空的不可变字符串只会浪费内存。最终你需要将文档设置为真实的东西,等到那一点做任何分配。

接下来从这里下载TableViewSuite示例;

http://developer.apple.com/library/ios/#samplecode/TableViewSuite/Introduction/Intro.html%23//apple_ref/doc/uid/DTS40007318

看看简单的样本。

请花时间研究该样本,它将帮助您了解表格视图。

答案 2 :(得分:0)

UIView没有reloadData方法。 UIView Class Reference

也许你可以展示你的代码,这样我们就可以看到你想要做什么了?

答案 3 :(得分:0)

我有同样的概率,我只是使用viewDidLoad添加数据,最后我使用[super loadView];并重新加载。