2016-05-12 36 views
-2

我使用的代碼SEGUE:[的UIBarButtonItem上海華]:無法識別的選擇發送到實例

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(UIButton *)sender 
{ 
    menuVC *menuview = [segue destinationViewController]; 
    CGPoint centerOfButton = [sender.superview convertPoint:sender.center toView:nil]; 

    [self.circularTransitionHandler transitionWithDestinationViewController:menuview initialTransitionPoint:centerOfButton]; 
} 

應用崩潰:

終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',原因: ' - [UIBarButtonItem superview]:發送到實例的無法識別的選擇器0x7ffb74293b10'

+0

附加異常斷點和崩潰 – Shubhank

+0

的查線的5日線[self.circularTransitionHandler transitionWithDestinationViewController:menuview initialTransitionPoint:centerOfButton]。 –

+0

什麼是你的menuView和centerOfbutton值 – Shubhank

回答

0

您是否嘗試訪問您的輕觸按鈕?所以,當你試圖讓你的按鈕超級查看,應用程序確實崩潰。不幸的是,UIBarButtonItem沒有superview屬性。您需要使用您的UIBarButtonItem.view

請更新您這樣的代碼:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    menuVC *menuview = [segue destinationViewController]; 
    UIBarButtonItem *item = (UIBarButtonItem *)sender; 
    UIView *view = [item valueForKey:@"view"]; 
    CGPoint centerOfButton = [view convertPoint:view.center toView:nil];  
    [self.circularTransitionHandler transitionWithDestinationViewController:menuview initialTransitionPoint:centerOfButton]; 
} 

見我已經改變了參數類型。

+0

不工作,崩潰,它說:[UIBarButtonItem中心]:無法識別的選擇器發送到實例0x7fcfbb240dd0' –

1
`UIBarButtonItem` does not extend `UIView` thus it has no frame property. 
We can get center point of button like this: 


    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(UIBarButtonItem *)sender 
    { 
     menuVC *menuview = [segue destinationViewController]; 
     UIView *barView = [sender valueForKey:@"view"]; 
     if (barView) { 
     CGRect buttonFrame = [barView convertPoint: barView.bounds toView:self.view]; 

     CGPoint centerOfButton = CGPointMake(buttonFrame.origin.x + buttonFrame.size.width/2, 
              buttonFrame.origin.y + buttonFrame.size.height/2); 

     [self.circularTransitionHandler transitionWithDestinationViewController:menuview 
                 initialTransitionPoint:centerOfButton]; 
     } 
    } 
+0

如何獲得'UIBarButtonItem'的'.view'屬性? – Hemang

+0

UIBarButtonItem本身具有視圖屬性,我直接使用UIBarButtonItem和方法。 – Akhi

+0

你可以使用UIView * view = [sender valueForKey:@「view」]; valueForKey屬性來獲取它我也更新了我的答案,請檢查。 – Akhi

相關問題