我使用 segue 制作我的自定义标签栏,它运行成功,现在我尝试在标签栏 View Controller 上的两个 View Controller 之间传递数据
我的标签栏 Controller 代码
- (void) perform {
ViewController *ctbcv = (ViewController *)self.sourceViewController;
UIViewController *dst = (UIViewController *) self.destinationViewController;
for(UIView *view in ctbcv.placeholder.subviews)
{
[view removeFromSuperview];
}
ctbcv.currentViewController = dst;
[ctbcv.placeholder addSubview:dst.view];
}
和segue条件
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"HomeSegue"]
|| [segue.identifier isEqualToString:@"DeveloperSegue"]
|| [segue.identifier isEqualToString:@"DesignerSegue"]|| [segue.identifier isEqualToString:@"btn4"]){
NSLog(@"%lu",(unsigned long)[self.buttons.subviews count]);
for (int i=0; i<[self.buttons.subviews count];i++) {
UIButton *button = (UIButton *)[self.buttons.subviews objectAtIndex:i];
[button setSelected:NO];
}
UIButton *button = (UIButton *)sender;
NSLog(@"%ld", (long)button.tag);
btnclicked = button.tag;
[button setSelected:YES];
}
}
此代码运行成功,现在我在第一个 View Controller 上创建按钮并将 segue 提供给新的 View Controller ,单击按钮时它会崩溃。
- (void)viewDidLoad {
[super viewDidLoad];
[btnnext addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
}
-(void) buttonClicked:(UIButton*)sender
{
NSLog(@"you clicked on button %ld", (long)sender.tag);
[self performSegueWithIdentifier:@"MySegue" sender:sender];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"MySegue"]) {
navVC *vc = [segue destinationViewController];
}
}
在这段代码之后它崩溃了,Xcode 显示“THREAD 1: EXC_BAD_ACCESS(code=2, address = 0xc)”任何解决方案?
我用 this reference用于制作自定义标签栏
我制作了在这个标签栏中打开新 View Controller 的按钮。
谢谢
最佳答案
只需检查一下您是否已将代码放在要使用的主 Controller 中,而不是放在标签栏 Controller 的标签中。
关于IOS Segue 在自定义选项卡栏中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27225523/