You can use delegates, as you want to communicate between two view controllers.
Create a protocol in DetailViewController. While you initially segue from TableViewController to DetailViewController set "idx" as the selected indexPath.row or array index.
When you delete it from DetailViewController, delegate will send the index to the TableViewController and you can remove it from your main array there.
DetailViewController.h file
#import <UIKit/UIKit.h>
@protocol DetailViewControllerDelegate <NSObject>
@optional
-(void) removeElementAt:(int )index;
@end
@interface DetailViewController : UIViewController{
IBOutlet UIButton *bttn;
id <DetailViewControllerDelegate> delegate;
}
@property (retain) int idx;
@property (retain) id delegate;
-(IBAction)bttnclicked;
-(IBAction)back:(id)sender;
@end
In DetailViewController.m file
#import "DetailViewController.h"
#import "TAbleViewController.h"
@interface DetailViewController ()
@end
@implementation DetailViewController
@synthesize idx,delegate;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(IBAction)bttnclicked{
[[self delegate] removeElementAt:idx];
}
-(IBAction)back:(id)sender{
[self dismissViewControllerAnimated:YES completion:NULL];
}
@end
For TableViewContoller.h file
#import <UIKit/UIKit.h>
#import "DetailViewController.h"
@interface TableViewContoller : UIViewController <DetailViewControllerDelegate>
{
DetailViewController *secondview;
}
@end
In TableViewController.m file,
#import "TableViewController.h"
#import "DetailViewController.h"
@interface TableViewController ()
@end
@implementation TableViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void) removeElementAt:(int )index
{
NSLog(@"Before object : %@",self.objects);
[self.objects removeObjectAtIndex:index];
//reload table at your convinience
NSLog(@"Removed object : %@",self.objects);
[self.tableView reloadData];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"showDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
DetailViewController *dc=[segue destinationViewController];
dc.idx = (int) indexPath.row;
dc.delegate = self;
}
}