这是我的第一个问题。我不会问,但在阅读文档并尝试从堆栈溢出的大量代码后,我仍然难倒。我刚刚开始学习代码,所以是的,我是一个笨蛋,如果我做了一些基本的错误就不会感到惊讶。
我正在尝试做的事情:在自定义单元格的textField中输入一个数字,在退出时,在CustomCellClass.m中调用saveGoal方法(代码如下所示)。 saveGoal方法从先前条目的文本文件创建targetsArray(如果没有数据创建文本文件。我省略了该代码,因为它有效)。这是困难的(对我来说)。我需要调用方法的单元格的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];
}
}
}
非常感谢解决方案!
答案 0 :(得分:1)
如果您有自定义单元格,请为其添加属性:
@property (strong, nonatomic) NSIndexPath *indexPath;
并在返回要显示的单元格时设置它。现在,单元格可以访问所需的信息。
除了:
不是说你将再使用它,但不要这样做:
NSIndexPath *indexPath = [[NSIndexPath alloc] init];
indexPath = [self.tableView indexPathForCell: UNKNOWN CELL PARAMETER];
因为创建一个实例只是为了在下一个语句中销毁它是浪费
答案 1 :(得分:0)
或者您可以像这样进入您选择的动作方法:
CGPoint hitPoint = [sender convertPoint:CGPointZero toView:self.tableView];
NSIndexPath *hitIndex = [self.tableView indexPathForRowAtPoint:hitPoint];