Objective c CellForRowatineXpath返回null,但确实需要类似的方法

Objective c CellForRowatineXpath返回null,但确实需要类似的方法,objective-c,uitableview,delegates,interface-builder,Objective C,Uitableview,Delegates,Interface Builder,我的UITableViewController lol中有一个UITableView,显然,但是我需要在-voidViewWillExample:BOOLanimated方法中的给定索引处获取一个单元格 现在,我的单元格是静态的,我在界面生成器中创建它们。如果我打电话 UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:previously_selected_cell

我的UITableViewController lol中有一个UITableView,显然,但是我需要在-voidViewWillExample:BOOLanimated方法中的给定索引处获取一个单元格

现在,我的单元格是静态的,我在界面生成器中创建它们。如果我打电话

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:previously_selected_cell.integerValue inSection:0]];
它为单元格返回null。我在1个部分中只有3个静态单元。我尝试了第0节和第1节,但都返回null

目前,我已经删除了-UITableViewCell*tableView:UITableView*tableView cellForRowAtIndexPath:NSIndexPath*indexPath方法,因为如果添加它,它将清除所有静态单元格的UITableView

是否有一种方法可以在-voidViewWillExample:BOOLanimated中调用,该方法将返回给定索引处的单元格

提前谢谢

编辑:我签出了,但我使用的是没有CellForRowatineXpath的静态单元格,所以这个问题没有帮助

EDIT2:我试图在视图加载时设置单元格的附件类型。但仅在某个单元格上,该单元格是用户在退出应用程序之前选择的单元格

#import "AutoSyncSettings.h"
#import "CDFetchController.h"


@implementation AutoSyncSettings

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

#pragma mark - View lifecycle

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

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (void)viewWillAppear:(BOOL)animated
{
    CDFetchController *cdfc = [[CDFetchController alloc] init];
    NSFetchedResultsController *results = [cdfc getFetchedResultsControllerWithEntityName:@"SETTINGS"];
    NSArray *objects = [results fetchedObjects];
    NSNumber *sync_setting;

    if(objects.count > 0)
    {     
        NSManagedObject *object = [objects objectAtIndex:0];
        sync_setting = [object valueForKey:@"wifi_setting"];

        NSLog(@"(Settings)sync_setting: %@",sync_setting);
    NSLog(@"(Settings)sync_setting int value: %i",sync_setting.integerValue);
    NSLog(@"(Settings)TableView: %@",self.tableView);

//cell is null, even after this.
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:wifi_settings.integerValue inSection:0]];
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
//cell is still null. WHY OH WHY? :(

        objects = nil;
    }

    cdfc = nil;
    results = nil;
    objects = nil;
    sync_setting = nil;

    [super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

#pragma mark - Table view data source

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    return NO;
}

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
    return NO;
}

#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    for (int i = 0; i < [tableView numberOfRowsInSection:indexPath.section]; i++)
    {
        if([[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:indexPath.section]] accessoryType] == UITableViewCellAccessoryCheckmark)
        {
            [tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:indexPath.section]].accessoryType = UITableViewCellAccessoryNone;
        }
    }

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.accessoryType = UITableViewCellAccessoryCheckmark;

    CDFetchController *cdfc = [[CDFetchController alloc] init];
    NSFetchedResultsController *results = [cdfc getFetchedResultsControllerWithEntityName:@"SETTINGS"];
    NSManagedObjectContext *context = [results managedObjectContext];
    NSArray *objects = [results fetchedObjects];

    if(objects.count > 0)
    {

        NSManagedObject *object = [objects objectAtIndex:0];

        NSNumber *sync_setting = [NSNumber numberWithInt:indexPath.row];
        [object setValue:sync_setting forKey:@"sync_interval"];
        [object setValue:[NSNumber numberWithInt:0] forKey:@"id"];

        [ErrorHandler saveMoc:context];
    }
    else
    {
        //INSERT NEW OBJECT
        NSManagedObject *object = [NSEntityDescription insertNewObjectForEntityForName:@"SETTINGS" inManagedObjectContext:context];

        NSNumber *sync_setting = [NSNumber numberWithInt:indexPath.row];
        [object setValue:sync_setting forKey:@"sync_interval"];
        [object setValue:[NSNumber numberWithInt:0] forKey:@"id"];

        [ErrorHandler saveMoc:context];
    }
}

@end
我想将复选标记附件添加到以前选择的单元格, 即使应用程序 退出/崩溃

方法是控制CellForRowatineXpath实现中的indexPath,如果它等于先前选择的值,则采取行动

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{ 
    // usual cache lookup, allocation of the cell, etc
    if (indexPath.row == previously_selected_cell.integerValue) {
        // add checkbox here
    } else {
        // remove checkbox
    }
}
我想将复选标记附件添加到以前选择的单元格, 即使应用程序 退出/崩溃

方法是控制CellForRowatineXpath实现中的indexPath,如果它等于先前选择的值,则采取行动

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{ 
    // usual cache lookup, allocation of the cell, etc
    if (indexPath.row == previously_selected_cell.integerValue) {
        // add checkbox here
    } else {
        // remove checkbox
    }
}

我有一个项目正是这样做的,它的工作非常完美。但是,除非您在尝试以这种方式访问单元格之前调用[super ViewWillDisplay:animated],否则它无法工作


基本实现可能从情节提要加载到单元格中

我有一个项目正是这样做的,而且效果非常好。但是,除非您在尝试以这种方式访问单元格之前调用[super ViewWillDisplay:animated],否则它无法工作



基本实现可能从情节提要加载到单元格中

我认为cellForRowAtIndexPath应该仍然有效;您确定以前选择的\u cell.integerValue具有您期望的值吗?@jtbandes是的,当前为2。如果cellForRowAtIndexPath中的注释,我的所有静态单元格都将消失。我相信它会尝试创建新的单元格…你到底想实现什么-为什么你要尝试在ViewWillAspect方法中获取该索引处的单元格?@NickBull抱歉,将编辑我的问题。我想将复选标记附件添加到以前选择的单元格,即使应用程序退出/崩溃,以前选择的单元格变量也会被存储为什么不在tableview委托中的CellForRowatineXpath实现中设置与以前设置的索引路径匹配的索引路径?我相信CellForRowatineXpath仍然可以工作;您确定以前选择的\u cell.integerValue具有您期望的值吗?@jtbandes是的,当前为2。如果cellForRowAtIndexPath中的注释,我的所有静态单元格都将消失。我相信它会尝试创建新的单元格…你到底想实现什么-为什么你要尝试在ViewWillAspect方法中获取该索引处的单元格?@NickBull抱歉,将编辑我的问题。我想将复选标记附件添加到以前选择的单元格,即使应用程序退出/崩溃,以前选择的单元格变量也会被存储为什么不在tableview委托的CellForRowatineXpath实现中设置与以前设置的索引路径匹配的索引路径?如果使用静态表视图,则无法实现此方法。@jrturton。我想用MrTJ发布的方式使用它,但我的UITableView不是动态的。@MrTJ感谢这种方法。抱歉,伙计们,我没有很好地阅读这个问题。不幸的是,对于静态UITableViews,我没有相关的经验,也许其他人会想出一个解决方案。编辑-我看到它已经解决了:如果您使用的是静态表视图,则无法实现此方法。@jrturton。我想用MrTJ发布的方式使用它,但我的UITableView不是动态的。@MrTJ感谢这种方法。抱歉,伙计们,我没有很好地阅读这个问题。不幸的是,对于静态UITableViews,我没有相关的经验,也许其他人会想出一个解决方案。编辑-我看到它已经解决了:视图将自动显示并加载良好,但这不是我的问题。无论如何,谢谢你的发帖。是的,对不起-无效视图将出现:BOOLanimated。在这种方法中,我想对细胞进行基因改造我也会很好的。我会发布我的全班。我更改了一些变量名,除此之外,每件事都是我发布OP时的样子。哦,我没有理解
先读它。我会在这里通知你的。情况似乎确实如此。修好了。感谢您的耐心和持续的帮助!视图将自动显示并加载良好,但这不是我的问题。无论如何,谢谢你的发帖。是的,对不起-无效视图将出现:BOOLanimated。在这种方法中,我想对细胞进行基因改造我也会很好的。我会发布我的全班。我更改了一些变量名,除此之外,每件事都是我发布OP时的样子。哦,我在读它时没有首先理解它。我会在这里通知你的。情况似乎确实如此。修好了。感谢您的耐心和持续的帮助!