Ios 将值从一个视图控制器中的滑块传递到另一个视图控制器中的int值
我试图将一个值从一个视图控制器中的滑块传递到另一个视图控制器中int类型的属性。一个改变了,我不想改变视图控制器,因此sugue不是一个选项。谁能告诉我我做错了什么 以下头文件和主文件是包含滑块的视图控制器的文件。必须从此视图控制器传递信息 SliderViewController.hIos 将值从一个视图控制器中的滑块传递到另一个视图控制器中的int值,ios,objective-c,uiviewcontroller,uislider,Ios,Objective C,Uiviewcontroller,Uislider,我试图将一个值从一个视图控制器中的滑块传递到另一个视图控制器中int类型的属性。一个改变了,我不想改变视图控制器,因此sugue不是一个选项。谁能告诉我我做错了什么 以下头文件和主文件是包含滑块的视图控制器的文件。必须从此视图控制器传递信息 SliderViewController.h #import "IntViewController.h" @property (strong, nonatomic) IntViewController *intViewController; - (IBAc
#import "IntViewController.h"
@property (strong, nonatomic) IntViewController *intViewController;
- (IBAction)sliderValue:(UISlider *)sender;
@property (nonatomic) int kms;
SliderViewController.m
#import "SliderViewController.h"
@interface SliderViewController ()
@end
@implementation SliderViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.intViewController = [[IntViewController alloc] init];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"%i", self.nearbyViewController.kms);
}
- (IBAction)sliderValue:(UISlider *)sender {
[self.intViewController setKms:(int) sender.value];
NSLog(@"%i", self.intViewController.kms);
}
@end
#import "IntViewController.h"
@interface IntViewController ()
@end
@implementation IntViewController
@synthesize kms;
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"%i", self.kms);
}
两个nslog都在这里打印所需的值
以下头文件和主文件是必须向其传递信息的视图控制器的文件
IntViewController.h
#import "IntViewController.h"
@property (strong, nonatomic) IntViewController *intViewController;
- (IBAction)sliderValue:(UISlider *)sender;
@property (nonatomic) int kms;
IntViewController.m
#import "SliderViewController.h"
@interface SliderViewController ()
@end
@implementation SliderViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.intViewController = [[IntViewController alloc] init];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"%i", self.nearbyViewController.kms);
}
- (IBAction)sliderValue:(UISlider *)sender {
[self.intViewController setKms:(int) sender.value];
NSLog(@"%i", self.intViewController.kms);
}
@end
#import "IntViewController.h"
@interface IntViewController ()
@end
@implementation IntViewController
@synthesize kms;
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"%i", self.kms);
}
NSLog会在此处继续打印0。
[[IntViewController alloc]init]
会创建一个新对象,并且由于您不显示它,因此视图不会出现。您可能需要的是对现有IntViewController
对象的引用。或者,您可以使用某种由滑块更新并由其他控制器读取的数据模型。@PhillipMills我使用的是选项卡栏,IntViewController位于选项卡栏中的索引0,而SliderViewController位于索引4。您能告诉我如何从SliderViewController获取IntViewController的引用吗?您可以创建选项卡栏控制器的自定义子类,并让它通过IntViewController
作为SliderViewController
的委托,在awakeFromNib
调用中,或在您知道所有控制器的任何地方设置正确。