Вы можете использовать делегаты, так как вы хотите установить связь между двумя контроллерами представлений.
Создайте протокол в DetailViewController. Когда вы сначала переходите из TableViewController в DetailViewController, установите «idx» в качестве выбранного индекса indexPath.row или массива.
Когда вы удаляете его из DetailViewController, делегат отправит этот индекс в TableViewController, и вы можете удалить его из своего основного массива.
DetailViewController.h файл
#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
В DetailViewController.m файл
#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
Для TableViewContoller.h файла
#import <UIKit/UIKit.h>
#import "DetailViewController.h"
@interface TableViewContoller : UIViewController <DetailViewControllerDelegate>
{
DetailViewController *secondview;
}
@end
В TableViewController.m файле
#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;
}
}
Если вы понимаете правильно, вы хотите, чтобы при щелчке по строке и нажатии на второй контроллер запись на ленту в первом контроллере должна быть удалена? –
Да, правильно ..... –
Если вы положили 'UIButton' на' UIViewController', то что это такое? –