3

我一直在练习 tableViews 但我不知道如何在单击按钮时插入新项目。

这就是我所拥有的:

BIDViewController.h

#import <UIKit/UIKit.h>

@interface BIDViewController : UIViewController

// add protocols
<UITableViewDataSource, UITableViewDelegate>

//this will hold the data
@property (strong, nonatomic) NSMutableArray *names;

- (IBAction)addItems:(id)sender;

@end

BIDViewController.m

#import "BIDViewController.h"

@interface BIDViewController ()

@end

@implementation BIDViewController

//lazy instantiation
-(NSMutableArray*)names
{
    if (_names == nil) {
        _names = [[NSMutableArray alloc]init];
    }
    return _names;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    // add data to be display

    [self.names addObject:@"Daniel"];
    [self.names addObject:@"Alejandro"];
    [self.names addObject:@"Nathan"];
}

//table view
-(NSInteger)tableView:(UITableView*)tableView
numberOfRowsInSection:(NSInteger)section
{
    return [self.names count];
}

- (UITableViewCell *) tableView:(UITableView *)tableView
          cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    UITableViewCell *cell =  [tableView dequeueReusableCellWithIdentifier:@"identifier"];

    if (cell == nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"identifier"];
    }
    cell.textLabel.text =  self.names [indexPath.row];
    return cell;
}

- (IBAction)addItems:(id)sender {
    // I thought it was as simple as this, but it doesn't work
    [self.names addObject:@"Brad"];
    [tableView relaodData];
}
@end

我认为这是一个简单的向数组中插入项目而不是重新加载数据,但它不起作用。

有人可以告诉我如何在单击按钮时向 tableView 添加新项目吗?

非常感谢

4

2 回答 2

4

你做对了,

- (IBAction)addItems:(id)sender {
    // I thought it was as simple as this, but it doesn't work
    [self.names addObject:@"Brad"];
    [self.tableView relaodData];
}

是正确的方法。

请仔细检查变量tableView,我看不到它的声明。

确保你有,

@property(weak, nonatomic) IBOutlet UITableView *tableView;
[self.tableView setDelegate:self];
[self.tableView setDataSource:self];

并将 tableView 正确连接到 .nib

于 2013-05-01T01:26:35.470 回答
1

你在正确的轨道上。确保您正确设置了代理和数据源,并且您的插座已连接到按钮。

编辑:也相当肯定你不能只是 @"blah" 字符串到一个可变数组中。尝试先将文本初始化为 NSString,然后将其作为指针传入。

于 2013-05-01T01:28:06.303 回答