У меня есть приложение, где я делаю некоторые вычисления, и мне нужно передать результат этого вычисления в ViewController3 и показать там результат. Теперь я использую ярлык в том же ViewController2, где у меня есть расчет. Спасибо за помощь.Сделайте некоторые вычисления на Viewcontroller, нужно показать результат другому Viewcontroller
ViewController2.h
#import <UIKit/UIKit.h>
@interface ViewController2 : UIViewController<UITextFieldDelegate>
@property (weak, nonatomic) IBOutlet UILabel *gasPrice;
@property (weak, nonatomic) IBOutlet UILabel *gasCarMileage;
@property (weak, nonatomic) IBOutlet UITextField *perGalon;
@property (weak, nonatomic) IBOutlet UITextField *miles;
@property(nonatomic, copy, readonly) NSString *result;
- (IBAction)getIt:(id)sender;
@end
ViewController2.m
#import "ViewController2.h"
#import "ViewController3.h"
@interface ViewController2()
@end
@implementation ViewController2
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
//Start calculation
- (IBAction)getIt:(id)sender; {
float perGalon = ([_perGalon.text floatValue]);
float miles = ([_miles.text floatValue]);
float mileCost = perGalon/miles;
[self performSegueWithIdentifier:@"viewController3" sender: nil];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"viewController3"]) {
ViewController3 *viewController3 = [segue destinationViewController];
viewController3.result = [[NSString alloc] initWithFormat: @"Every mile you drive
will cost you $ %f", mileCost];
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.perGalon.delegate = self;
self.miles.delegate = self;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
return [textField resignFirstResponder];
}
@end
ViewController3.h
#import <UIKit/UIKit.h>
@interface ViewController3 : UIViewController
@property(nonatomic, copy) NSString *result;
@end
ViewController3.m
#import "ViewController3.h"
#import "ViewController2.h"
@interface ViewController3()
@end
@interface ViewController2()
@property(nonatomic, copy, readwrite) NSString *result;
@end
@implementation ViewController3
- (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.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
Большое спасибо, попробуем. –
Проблемы. Первый. В файле vC2.m при записи viewController3.result = self.result.text; Я получил сообщение: Несовместимые типы указателей, назначающие 'UIlabel *' из 'NSStreeng *' Второй. Когда я сделал [self.navigationController pushViewController: viewController3]; получил сообщение: Нет видимого @interface для 'UINavigationController' объявляет селектор 'pushViewController' Я не использую NavContriller. И жаль глупого Q, я полностью newb, где мне следует использовать результат @property (nonatomic, copy) NSString *; ? –
Вы должны объявить свойство в заголовке ViewController файла .h. Поскольку вы упомянули, вы не используете NavController, используете ли вы раскадровки? – ldindu