如何将 selectedSegmentIndex 发送到 Objective-c 中的 containerView?
How can I send selectedSegmentIndex to containerView in Objective-c?
我的 viewController 中有一个 containerView。我的 viewController 有一个 UISegmentedControl。
如何在此时发送此 selectedSegmentIndex selected 以及每次更改时发送?
我',尝试在下一个 class 中使用 属性 和 prepareForSegue 但这只在第一次加载时发送..
谢谢!
然后 编辑 我得到:-[ViewController containerViewDidChangeSegmentIndex:]:无法识别select或发送到实例 0x7f8db16286d0
第一个ViewController(这包含一个select和一个containerView)
ViewController.h
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UISegmentedControl *select;
@property (weak, nonatomic) IBOutlet UIView *container;
@property(nonatomic, assign) ContainerViewController * classLevelReference;
@end
ViewController.m
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[_select addTarget:self action:@selector(segmentChanged:) forControlEvents:UIControlEventValueChanged];
}
- (void)segmentChanged:(UISegmentedControl *)segment{
//since you've reference to your container view here, you can directly call its method here:
[self.classLevelReference containerViewDidChangeSegmentIndex:segment.selectedSegmentIndex];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
//don't forget to check the segue id, if you've multiple segues
ContainerViewController *containerView = [segue destinationViewController];
self.classLevelReference = self;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
容器ViewController.h
@interface ContainerViewController : UIViewController
- (void)containerViewDidChangeSegmentIndex:(NSInteger)updatedIndex;
@end
ContainerView.m
@implementation ContainerViewController
- (void)containerViewDidChangeSegmentIndex:(NSInteger)updatedIndex{
//Do whatever you want with your updated index
NSLog(@"changing");
}
@end
您可能想在 ContainerViewController.h
中创建一个方法,如下所示:
@interface ContainerViewController:UIViewController
//.....other implementation here.
- (void)containerViewDidChangeSegmentIndex:(NSInteger)updatedIndex;
@end
现在在您的 ContainerViewController.m
中实现此方法,如下所示:
- (void)containerViewDidChangeSegmentIndex:(NSInteger)updatedIndex{
//Do whatever you want with your updated index
}
现在,在准备转场时,将对 ContainerViewController
的引用保存在 class 级变量中:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
//don't forget to check the segue id, if you've multiple segues
ContainerViewController *containerView = [segue destinationViewController];
self.classLevelReference = containerView;
}
最后在 FirstViewController.m
中,当段索引更改时告诉容器视图。
- (void)viewDidLoad{
//.....your other implementation here.....
//add a listener to your segment's value changed action
[youregements addTarget:self action:@selector(segmentChanged:) forControlEvents:UIControlEventValueChanged];
}
- (void)segmentChanged:(UISegmentedControl *)segment{
//since you've reference to your container view here, you can directly call its method here:
[self.classLevelReference containerViewDidChangeSegmentIndex:segment.selectedSegmentIndex];
}
重要提示:您的 ContainerViewController
和 FirstViewController
可能有不同的名称,请仔细应用更改。
编码愉快!
我的 viewController 中有一个 containerView。我的 viewController 有一个 UISegmentedControl。
如何在此时发送此 selectedSegmentIndex selected 以及每次更改时发送?
我',尝试在下一个 class 中使用 属性 和 prepareForSegue 但这只在第一次加载时发送.. 谢谢!
然后 编辑 我得到:-[ViewController containerViewDidChangeSegmentIndex:]:无法识别select或发送到实例 0x7f8db16286d0
第一个ViewController(这包含一个select和一个containerView)
ViewController.h
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UISegmentedControl *select;
@property (weak, nonatomic) IBOutlet UIView *container;
@property(nonatomic, assign) ContainerViewController * classLevelReference;
@end
ViewController.m
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[_select addTarget:self action:@selector(segmentChanged:) forControlEvents:UIControlEventValueChanged];
}
- (void)segmentChanged:(UISegmentedControl *)segment{
//since you've reference to your container view here, you can directly call its method here:
[self.classLevelReference containerViewDidChangeSegmentIndex:segment.selectedSegmentIndex];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
//don't forget to check the segue id, if you've multiple segues
ContainerViewController *containerView = [segue destinationViewController];
self.classLevelReference = self;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
容器ViewController.h
@interface ContainerViewController : UIViewController
- (void)containerViewDidChangeSegmentIndex:(NSInteger)updatedIndex;
@end
ContainerView.m
@implementation ContainerViewController
- (void)containerViewDidChangeSegmentIndex:(NSInteger)updatedIndex{
//Do whatever you want with your updated index
NSLog(@"changing");
}
@end
您可能想在 ContainerViewController.h
中创建一个方法,如下所示:
@interface ContainerViewController:UIViewController
//.....other implementation here.
- (void)containerViewDidChangeSegmentIndex:(NSInteger)updatedIndex;
@end
现在在您的 ContainerViewController.m
中实现此方法,如下所示:
- (void)containerViewDidChangeSegmentIndex:(NSInteger)updatedIndex{
//Do whatever you want with your updated index
}
现在,在准备转场时,将对 ContainerViewController
的引用保存在 class 级变量中:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
//don't forget to check the segue id, if you've multiple segues
ContainerViewController *containerView = [segue destinationViewController];
self.classLevelReference = containerView;
}
最后在 FirstViewController.m
中,当段索引更改时告诉容器视图。
- (void)viewDidLoad{
//.....your other implementation here.....
//add a listener to your segment's value changed action
[youregements addTarget:self action:@selector(segmentChanged:) forControlEvents:UIControlEventValueChanged];
}
- (void)segmentChanged:(UISegmentedControl *)segment{
//since you've reference to your container view here, you can directly call its method here:
[self.classLevelReference containerViewDidChangeSegmentIndex:segment.selectedSegmentIndex];
}
重要提示:您的 ContainerViewController
和 FirstViewController
可能有不同的名称,请仔细应用更改。
编码愉快!