У меня есть два контроллера вида. Я хочу сделать что-то подобное, когда я нажимаю кнопку «Назад» в SecondViewController, он возвращается к «FirstViewController», а также обновляет текст метки «FirstViewController». Я пробовал под кодом, его работая отлично, что когда я нажимаю кнопку «Назад», он возвращается к «FirstViewController», но проблема в том, что он не обновляет текст метки «FirstViewController». Когда я отлаживаю свой код, элемент управления переходит к методу «startSampleProcess» и обновляет текст метки, но когда мы возвращаемся к «FirstViewController» методом «processCompleted», там отображается старый текст. (Я делаю эту работу с использованием делегатов) Любая помощь будет оценена по достоинству.Как обновить текст заметки ViewController от SecondViewController
FirstViewController.h
#import <UIKit/UIKit.h>
//#import "SampleProtocol.h"
@protocol SampleProtocolDelegate <NSObject>
@required
- (void) processCompleted;
@end
// Protocol Definition ends here
@interface FirstViewController : UIViewController{
id <SampleProtocolDelegate> _delegate;
IBOutlet UILabel *myLabel;
}
@property (nonatomic,strong) id delegate;
-(void)startSampleProcess; // Instance method
@end
FirstViewController.m
#import "FirstViewController.h"
@implementation FirstViewController
@synthesize delegate;
-(void)startSampleProcess{
myLabel.text = @"we are back!!!";
[NSTimer scheduledTimerWithTimeInterval:3.0 target:self.delegate
selector:@selector(processCompleted) userInfo:nil repeats:NO];
}
- (void)viewDidLoad{
[super viewDidLoad];
}
@end
SecondViewController.h
#import <UIKit/UIKit.h>
#import "FirstViewController.h"
@interface SecondViewController : UIViewController<SampleProtocolDelegate>{
FirstViewController *sampleProtocol;
}
-(IBAction)CallBack:(id)sender;
@end
SecondViewController.m
#import "SecondViewController.h"
@implementation SecondViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad{
[super viewDidLoad];
}
-(IBAction)CallBack:(id)sender{
sampleProtocol = [[FirstViewController alloc]init];
sampleProtocol.delegate = self;
[sampleProtocol startSampleProcess];
}
#pragma mark - Sample protocol delegate
-(void)processCompleted{
[self.navigationController popViewControllerAnimated:TRUE];
}
@end
Существует множество способов установить это «общение» между двумя контроллерами. Вы действительно хотите использовать делегирование в этом случае? Зачем? У вас должна быть причина, иначе есть более простые способы, и вы можете вместо этого преследовать одного из них. –
см. Это - http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers?answertab=votes#tab-top –
Я знаю только делегатов, поэтому поэтому я использовал его, но если любой другой более простой способ, который может выполнить мою задачу, чем направить меня, как я могу выполнить мою задачу ниже. Я только хочу, чтобы, когда я нажимаю кнопку в «SecondViewController», он просто возвращается к «FirstViewController», а также обновляет текст метки, который находится в «FirstViewController». Если есть какой-либо другой простой способ, чем направить меня, как я могу это сделать. –