Полный доступ к стеку вызовов:
public static void Main()
{
StackTrace stackTrace = new StackTrace(); // get call stack
StackFrame[] stackFrames = stackTrace.GetFrames(); // get method calls (frames)
// write call stack method names
foreach (StackFrame stackFrame in stackFrames)
{
Console.WriteLine(stackFrame.GetMethod().Name); // write method name
}
}
Так, при взятии первого - Вы знаете то, что функционирует, Вы находитесь в. Если Вы создаете помощника, прослеживающего функцию - берут тот перед последним - Вы будете знать свою вызывающую сторону.
Чтобы получить эффект смахивания, вам необходимо реализовать метод делегата представления таблицы
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
, это обеспечит доступ к взаимодействию смахивания для удаления. Я обычно обеспечиваю взаимодействие редактирования также для табличных представлений, где удаление возможно, так как взаимодействие смахивания имеет тенденцию быть немного скрытым от пользователей.
В качестве примера:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView beginUpdates];
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Do whatever data deletion you need to do...
// Delete the row from the data source
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationTop];
}
[tableView endUpdates];
}
Надеюсь, что это поможет.
Я почти уверен, что есть образец приложения, которое делает это. Более конкретный ответ будет скоро.
ОБНОВЛЕНИЕ: iPhoneCoreDataRecipes дает, вероятно, именно то, что вы ищете.
По теме, вот один из самых приятных методов:
// If I want to delete the next 3 cells after the one you click
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSMutableArray* indexPaths = [NSMutableArray array];
for (int i = indexPath.row + 3; i < indexPath.row + 3; i++)
{
[indexPaths addObject:[NSIndexPath indexPathForRow:i inSection:0]];
}
[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
[tableView endUpdates];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
Я думаю что есть более простой способ добиться того, чего вы хотите, но опять же, это довольно просто. Единственная трудность может заключаться в удалении самого себя ... только берегитесь ошибок сегментации.