添加表格视图单元格在 iOS 中不起作用?

Posted

技术标签:

【中文标题】添加表格视图单元格在 iOS 中不起作用?【英文标题】:Adding Table View Cell not working in iOS? 【发布时间】:2015-12-28 22:56:53 【问题描述】:

我正在尝试创建一个购物清单应用。我对 Objective-C 很陌生。不知何故,这段代码不起作用,我不知道我做错了什么。每当我在文本字段中输入内容并单击添加时,文本都不会添加到表格视图中。

头文件:

@interface NotesViewController : UIViewController  <UITableViewDataSource, UITableViewDelegate>

@property (nonatomic, strong) NSMutableArray *notes;
@property (nonatomic, strong) IBOutlet UITextField *noteTitleText;
@property (nonatomic, strong) IBOutlet UITableView *noteBlockTableView;

@end

实现文件:

@implementation NotesViewController

@synthesize notes; @synthesize noteTitleText; @synthesize noteBlockTableView;

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

    return [notes count]; 

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

    NSDictionary *tableViewTitle;
    tableViewTitle = [notes objectAtIndex:[indexPath row]];
    UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:nil];
    [[cell textLabel] setText:[tableViewTitle objectForKey:@"cellTitle"]];
    return cell;



-(IBAction)addNote 

    NSDictionary *tableViewTitle;
    tableViewTitle = [[NSDictionary alloc] initWithObjectsAndKeys:[noteTitleText text], @"cellTitle", nil];
    [notes addObject:tableViewTitle];
    [noteBlockTableView reloadData];
    noteTitleText.text = @"";

【问题讨论】:

您是否在某处(通常在initviewDidLoad)初始化notes(到一个空的可变数组)? 此外,在现代 Objective-C 中,您不需要合成属性,这是自动完成的,您可能希望使用字典文字 (@@"cellTitle": noteTitleText.text) 和访问器 (tableViewTitle[@"cellTitle"])。更好的是,您应该为此使用一个新类而不是字典。 而且你不应该分配UITableViewCells,你应该使用dequeueReusableCellWithIdentifier:forIndexPath: 【参考方案1】:

也许您应该覆盖numberOfSectionsInTableView 函数和return 1

【讨论】:

【参考方案2】:

欢迎使用 Objective-C!

在使用NSMutableArray之前,你应该先初始化它,像这样:

# NotesViewController.m

- (void)viewDidLoad 
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    notes = [[NSMutableArray alloc]init];

It should work.

【讨论】:

【参考方案3】:

首先初始化数组注释,然后你应该在 cellForRowAtIndexPath 方法中像这样分配单元格

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

NSDictionary *tableViewTitle;
tableViewTitle = [notes objectAtIndex:[indexPath row]];
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell.textLabel.text = [tableViewTitle objectForKey:@"cellTitle"];

return cell;

 

【讨论】:

以上是关于添加表格视图单元格在 iOS 中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

collectionView 单元格在 tapGestureRecognizer 函数中不起作用

回调闭包函数在单元格中不起作用

为啥两个表格视图单元格中的两个集合视图在 Swift 4 中不起作用?

UITableViewCell 上的 UILongPressGestureRecognizer 在 iOS 5 和 4.3 中不起作用

图像的滚动视图在自定义表格视图单元格中不起作用

UI警报表视图在ios7中不起作用