IOS Segue 在自定义标签栏中不起作用

Posted

技术标签:

【中文标题】IOS Segue 在自定义标签栏中不起作用【英文标题】:IOS Segue is not working in Custom Tab bar 【发布时间】:2014-12-01 09:42:58 【问题描述】:

我使用 segue 制作了我的自定义标签栏,它运行成功,现在我尝试在标签栏视图控制器上的两个视图控制器之间传递数据

我的标签栏控制器代码

- (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];


此代码运行成功,现在我在第一个视图控制器上创建按钮并为新的视图控制器提供 segue,单击按钮时崩溃。

- (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 制作自定义标签栏

我在这个标签栏中制作了打开新视图控制器的按钮。

谢谢

【问题讨论】:

【参考方案1】:

只需检查您已将代码放入您要使用的主控制器中,而不是标签栏控制器的标签中。

【讨论】:

以上是关于IOS Segue 在自定义标签栏中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Ios Swift:在自定义标签栏中显示导航栏

UITapGestureRecognizer 在自定义 UIView 中不起作用

UIScreenEdgePanGestureRecognizer 在自定义键盘扩展中不起作用

TapGestures 在自定义 TableViewCell 中不起作用

AsyncTask 在自定义适配器中不起作用

安全区域在自定义 TabBarController 的 ViewController 中不起作用