从视图中检索数据到情节提要中的 UITableViewCell

Posted

技术标签:

【中文标题】从视图中检索数据到情节提要中的 UITableViewCell【英文标题】:data retrieving from a view to UITableViewCell in storyboard 【发布时间】:2013-11-26 13:00:11 【问题描述】:

我在 Xcode 中遇到了同样的错误,但不知道为什么(我的错) 我正在尝试使用下面的 uitexfield 代码检索已保存的数据 那部分是为了节省

- (IBAction)saveCourseDetail:(id)sender

    NSMutableDictionary *courseDictionary=[NSMutableDictionary new];
    [courseDictionary setObject:courseName.text forKey:@"courseName"];
    [courseDictionary setObject:courseDescription.text forKey:@"courseDescription"];
    [courseDictionary setObject:classRoom.text forKey:@"classRoom"];
    [courseDictionary setObject:teacherName.text forKey:@"teacherName"];
    [courseDictionary setObject:buildingName.text forKey:@"buildingName"];

    NSUserDefaults *savedData=[NSUserDefaults standardUserDefaults];
    [savedData setObject:courseDictionary forKey:@"courseDictionary"];
    [savedData synchronize];
//    [self.delegate reloadTableData];
    [[NSNotificationCenter defaultCenter] postNotificationName:@"CourseAddedNotification" object:nil];
    [self.navigationController popViewControllerAnimated:YES];

#pragma  mark Course Tableview


    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    
        NSString *string = [_dataArray objectAtIndex:indexPath.row];

        NSString *CellIdentifier = @"Cell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

        if(cell==nil)
        
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:CellIdentifier];
        
        cell.textLabel.text=string;

        return cell;
    
    and the tableview that i'm trying to get the saved course details 



#pragma  mark - Table View Delegate -

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

    return 10;


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

    CourseCell *cell=[tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    if (!cell) 
        cell = [[CourseCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
    
    return cell;

但我不断收到同样的错误—— 2013-11-26 14:43:19.496 SidebarDemo[1170:70b] * 断言失败 -[UITableView dequeueReusableCellWithIdentifier:forIndexPath:], /SourceCache/UIKit_Sim/UIKit-2903.23/UITableView.m:5261 2013-11-26 14:43:19.500 SidebarDemo[1170:70b] * 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法使具有标识符 Cell 的单元格出列 - 必须注册一个 nib 或一个类用于标识符或连接故事板中的原型单元'

谁能帮帮我?

【问题讨论】:

你的故事板中是否有一个带有单元标识符的原型单元? 【参考方案1】:

您必须在 4.tab 的属性检查器中设置情节提要中的单元格标识符。标识符必须等于源代码中的标识符(此处为“Cell”)。

【讨论】:

【参考方案2】:

你必须使用

static NSString *CellIdentifier = @"messageCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

不要使用

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

苹果文档:

重要

在调用此方法之前,您必须使用 registerNib:forCellReuseIdentifier: 或 registerClass:forCellReuseIdentifier: 方法注册类或 nib 文件。

【讨论】:

【参考方案3】:

storyboard 中将identifier 添加到您的uitableviewCell,命名“Cell”与您在cellForRowAtIndexPath: 方法中使用的名称相同

【讨论】:

以上是关于从视图中检索数据到情节提要中的 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章

使用委托将数据从模态视图传递到父视图(在情节提要中使用 segue)

将 XIB 中的按钮链接到情节提要中的视图控制器

如何使用 Swift 中的自动生成键从情节提要中设置的 UITextView 中检索文本?

如何从情节提要中的 didSelectRowAtIndexPath 打开视图控制器?

何时将子视图从情节提要添加到超级视图?

Xcode,从情节提要中提取视图到笔尖,最好的方法?