IPhone:TableView添加数据

时间:2012-08-08 19:07:49

标签: iphone objective-c xcode

我正在创建具有表格视图的应用程序,但我无法在表格视图中添加数据

我在.h文件中名为NewTable的.xip文件中有表视图,这是我在.m文件中使用它的代码(listData它的数组):

- (void)viewDidLoad{
    [super viewDidLoad];
    [self TestTable];
}

-(void)TestTable{
    NSArray *array = [[NSArray alloc] initWithObjects:@"Vishal",@"Vinod",@"Sachin",@"Nilesh",@"Balu",@"Amrita",
                      @"susho",@"Akash",@"Nil",@"Lop",@"Koi",@"Absoulate",@"Dwalin",
                      @"Fili",@"Kili",@"Oin",@"Gloin",@"Bifur",@"Bofur",@"Bombur",nil];

    self.listData = array;
    [array release];
    self.listData= array;

    [self.NewTable reloadData];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return [self.listData count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
                             SimpleTableIdentifier];
    if(cell == nil){
        cell = [[UITableViewCell alloc] autorelease];
    }
    NSUInteger row = [indexPath row];
    cell.textLabel.text = [listData objectAtIndex:row];
    return cell;
}

{{{{{{{{{{{当我在cellForRowAtIndexPath添加nslog时,它不会在consol中打印任何内容!}}}}}}}}}}}} {{{{{{{{{{{当我在cellForRowAtIndexPath添加nslog时,它不会在consol中打印任何内容!}}}}}}}}}}}} {{{{{{{{{{{当我在cellForRowAtIndexPath添加nslog时,它不会在consol中打印任何内容!}}}}}}}}}}}

2 个答案:

答案 0 :(得分:0)

这是我通常用来初始化数据的内容。

-(void)viewDidLoad {
    self.listData = [[NSMutableArray alloc] initWithObjects:@"Vishal",@"Vinod",...,nil];
    [super viewDidLoad];
}

虽然,我认为您的问题是分配给不再保留的数组。

答案 1 :(得分:0)

如果您使用的是UIViewController而不是UITableViewController,则需要确保您的viewController符合UITableViewDataSourceUITableViewDelegate

@interface MyViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>  

接下来,您需要将此视图控制器实际设置为tableView的dataSource和delegate 您可以通过将鼠标从tableView拖动到文件的所有者(即MyViewController)来完成此操作 或者在代码中执行此操作:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.NewTable.dataSource = self;
    self.NewTable.delegate = self;
}

同样在cellForRowAtIndexPath中,更改行

cell = [[UITableViewCell alloc] autorelease];  

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SimpleTableIdentifier] autorelease];