如何使用NSMutableArray计数更新numberOfRowsInSection

时间:2010-10-21 10:06:58

标签: iphone uitableview sdk

在我的应用程序中,我允许用户将新的NSStrings行添加到UITableView。我将这些新字符串保存在NSMutableArray * dataArray

因此对于numberOfRowsInSection,我返回[dataArray count],但它似乎只是一直返回0,所以我的表不会自动填充。

如果有帮助,当我将[dataArray count]的NSLog作为添加更多条目时,它会保持为0.为什么它不会增加?

任何帮助?

3 个答案:

答案 0 :(得分:4)

不看@你的代码,就不可能预测原因..

然后你也可以尝试下面的HardLuck ......

首先尝试NSLog你的dataArray来检查记录是否正在添加。

没关系......你正在获取记录。

然后你错过了一件事。

重装表.. [tableView reloadData];

我认为这肯定会帮助你。另外在这里放一些代码。

答案 1 :(得分:3)

您是否已初始化阵列。我是这样做的 - 这是一个更好的方法!

·H:

@interface RootViewController : UITableViewController {
NSArray *array;
}

@property (nonatomic, retain) NSArray *array;

@end

的.m:

@implementation RootViewController
@synthesize array;

- (void)viewDidLoad {
    [super viewDidLoad];

    NSMutableArray *mArry = [[NSMutableArray alloc] init];
    [mArry addObject:@"An ObecjT"];
    self.array = mArry;
    [mArry release];

}
// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [array count];
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    // Configure the cell.
    cell.textLabel.text = [array objectAtIndex:indexPath.row];

    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSMutableArray *aNewArray = [[NSMutableArray alloc] initWithArray:array];
    [aNewArray addObject:@"Your Object"];
    self.array = aNewArray;
    [aNewArray release];
    [self.tableView reloadData];

}
- (void)viewDidUnload {
    self.array = nil;
}


- (void)dealloc {
    [array release];
    [super dealloc];
}

答案 2 :(得分:1)

您是否在Interface Builder中设置了UITableView的委托?请检查一下。

如果您已添加,则必须检查该dataArray是否有记录。