0

这是我的第一个问题。我不会问,但是在阅读了文档并尝试了堆栈溢出的大量代码之后,我仍然感到困惑。我最近才开始学习代码,所以是的,我是个笨蛋,如果我犯了一些基本错误也不会感到惊讶。

我正在尝试做的事情:在自定义单元格的文本字段中,输入一个数字,退出时在 CustomCellClass.m 中调用 saveGoal 方法(代码如下所示)。saveGoal 方法从先前条目的文本文件中创建了一个goalsArray(如果没有数据,则创建文本文件。我省略了该代码,因为它有效)。这就是困难的地方(对我来说)。我需要调用该方法的单元格的 indexPath,以便我可以插入用户条目......但我不知道如何让单元格对象用作 indexPathForCell 中的参数。

   - (IBAction)saveGoal:(id)sender {

    // Saving the user entry in a string
    self.goalString = [NSString stringWithFormat:@"%@\n",self.goal.text];

    // Instance variables
    NSError *err = nil;
    NSMutableArray *goalsArray = [NSMutableArray arrayWithContentsOfURL:self.goalsURLMethod];

    // If there is data in the text file
    NSIndexPath *indexPath = [[NSIndexPath alloc] init];

            // Ideally I'd like to do something like this (There is an IBOutlet from the 
            // table view in the storyboard to a tableView property).
            indexPath = [self.tableView indexPathForCell: UNKNOWN CELL PARAMETER]; 

            // Then based on the indexPath I can insert or replace objects in the array
            if(indexPath == 0) {
            // masterful code
            } else {
            // If it's another row, replace the object. Something like this:
            [goalsArray replaceObjectAtIndex: indexPath.row withObject: self.goalString];
            [goalsArray writeToURL:self.goalsURLMethod atomically:YES];

            // Then update the view 
            [self.tableView reloadData];
            }
        }
}

一个解决方案将不胜感激!

4

2 回答 2

1

如果您有自定义单元格,请向其添加属性:

@property (strong, nonatomic) NSIndexPath *indexPath;

并在您返回单元格进行显示时设置它。现在该单元可以访问所需的信息。

在旁边:

并不是说你会再使用它,但不要这样做:

NSIndexPath *indexPath = [[NSIndexPath alloc] init];
indexPath = [self.tableView indexPathForCell: UNKNOWN CELL PARAMETER];

因为创建一个实例只是为了在下一个语句中销毁它是浪费的

于 2014-04-10T18:29:25.993 回答
0

或者您可以在您选择的操作方法中这样做:

CGPoint hitPoint = [sender convertPoint:CGPointZero toView:self.tableView]; 
NSIndexPath *hitIndex = [self.tableView indexPathForRowAtPoint:hitPoint];
于 2014-04-10T18:32:27.660 回答