2013-10-28 3 views
0

보기 컨트롤러 아래에 두 개의 버튼이 있습니다. 그 버튼들 중 하나가 계산을합니다. 두 번째 것은 이러한 계산에 대한 정보를 보여줍니다. 정보에 대해서는 werkwijzeViewController라는 다른 viewcontroller에 모달 (modal) segue를 사용하고 있습니다. 계산 단추는 문제를 일으키지 않습니다. 정보 버튼을 누르면 "UIStoryboardModalSegue popoverController] : 인식 할 수없는 셀렉터가 인스턴스로 전송되었습니다." 뭐가 문제 야? (UIStoryboardSegue * : (무효) prepareForSegue -인스턴스 선택기로 인해 모달 세그먼트가 작동하지 않습니다.

...

viewcontroller.h

#import <UIKit/UIKit.h> 
#import "breuk.h" 
#import "verklaringViewController.h" 

@interface ViewController : UIViewController <UIPopoverControllerDelegate> 
@property (strong, nonatomic) IBOutlet UITextField *tellerVeld1; 
@property (strong, nonatomic) IBOutlet UITextField *noemerVeld1; 
@property (strong, nonatomic) IBOutlet UILabel *quotientVeld; 
@property (strong, nonatomic) IBOutlet UITextField *tellerVeld2; 
@property (strong, nonatomic) IBOutlet UITextField *noemerVeld2; 
@property (strong, nonatomic) IBOutlet UIButton *berekenKnop; 
@property (strong, nonatomic) breuk *breuk1; 
@property (strong, nonatomic) breuk *breuk2; 
@property (strong, nonatomic) breuk *hoofdbreuk; 

@property (strong, nonatomic) IBOutlet UITextField *uitkomstNoemerVeld; 
@property (strong, nonatomic) IBOutlet UITextField *uitkomstTellerVeld; 
@property (strong, nonatomic) IBOutlet UILabel *uitkomstStreep; 

@property (strong, nonatomic) UIPopoverController *popoverController; 



- (IBAction)berekenQuotient:(id)sender; 
@end 

viewcontroller.m

#import "ViewController.h" 

@interface ViewController() 
{ 


    BOOL veldVerplaatst; 
} 
@end 

@implementation ViewController 
@synthesize tellerVeld1; 
@synthesize noemerVeld1; 
@synthesize quotientVeld; 
@synthesize tellerVeld2; 
@synthesize noemerVeld2; 
@synthesize berekenKnop; 
@synthesize uitkomstNoemerVeld; 
@synthesize uitkomstTellerVeld; 
@synthesize uitkomstStreep; 
@synthesize breuk1; 
@synthesize breuk2; 
@synthesize hoofdbreuk; 
@synthesize popoverController; 

: 나는 관련 코드의 일부를 업로드하고 있습니다) 송신자 : (id) 발신자 {

UIStoryboardPopoverSegue *popoverSegue; 
    popoverSegue=(UIStoryboardPopoverSegue *)segue; 

    UIPopoverController *popoverController; 
    popoverController = popoverSegue.popoverController; 
    popoverController.delegate = self; 

    verklaringViewController *verklaringVC; 
    verklaringVC=(verklaringViewController *)popoverController.contentViewController; 

    ... 
} 
,210

@end

werkwijzeViewController.h

#import <UIKit/UIKit.h> 
#import "ViewController.h" 

@interface werkwijzeViewController : UIViewController 
@property (strong, nonatomic) IBOutlet UIButton *af; 
@property (strong, nonatomic) IBOutlet UITextView *vereenvoudigBreuken; 
@property (strong, nonatomic) IBOutlet UITextView *vermenigvuldigBreuken; 

@property (strong, nonatomic) NSMutableArray *tabelTellerOntbonden; 
@property (strong, nonatomic) NSMutableArray *tabelNoemerOntbonden; 
@property (strong, nonatomic) NSMutableArray *tabelGgdOntbonden; 

@end 

werkwijzeViewController.m

#import "werkwijzeViewController.h" 

@interface werkwijzeViewController() 

@end 

@implementation werkwijzeViewController 
@synthesize tabelGgdOntbonden; 
@synthesize tabelNoemerOntbonden; 
@synthesize tabelTellerOntbonden; 

... 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
// Do any additional setup after loading the view. 
    tabelTellerOntbonden =[NSMutableArray new]; 
    tabelTellerOntbonden = [((ViewController *)self.presentingViewController).breuk1 ontbindInFactoren:((ViewController *)self.presentingViewController).breuk1.tellerBreuk inTabel:tabelTellerOntbonden]; 
    NSLog(@"%@",tabelTellerOntbonden); 
} 


@end 

당신은 연결하여 IBAction를 방법의 모든 코드를 게시해야

#import "breuk.h" 

@implementation breuk 
@synthesize tellerBreuk; 
@synthesize noemerBreuk; 
@synthesize origineleNoemerBreuk; 
@synthesize origineleTellerBreuk; 
@synthesize ggd; 
@synthesize quotientBreuk; 
... 

    - (NSMutableArray *)ontbindInFactoren:(int)product inTabel:(NSMutableArray *)tabel 
    { 
     for (int priemfactor=1; priemfactor<=product; priemfactor++) 
     { 
      while (product%priemfactor==0) 
      { 
       [tabel addObject:[NSString stringWithFormat:@"%i",priemfactor]]; 
      } 
     } 
     return tabel; 
    } 


    @end 

답변

1

breuk.m 당신의 두 버튼에.

한눈에봤을 때 prepareForSegue 메서드가 맹목적으로 하위 스레드를 UIStoryboardPopoverSegue를 입력 한 다음 segue의 popoverController 속성에 액세스하려고 시도한다는 것이 문제인 것처럼 보입니다.

모든 segue에 대해 prepareForSegue 메소드가 호출됩니다. prepareForSegue에 segue 식별자를 검사하여 UIStoryboardPopoverSegue에 캐스팅하기 전에 올바른 segue를 처리하는지 확인하는 코드가 필요합니다.

+0

당신의 충고를 따랐습니다. 문제는 다음과 같습니다. 먼저 popover를 수행 한 다음 popover 외부로 누른 다음 modal segue를 사용합니다. 당신은 ios가 segue가 여전히 popover라고 생각한다고 제안했습니다. 어떻게 단편을 모달로 바꿀 수 있습니까? 처음에 popover 버튼을 누르지 않으면 모달 코드가 작동합니다. 하지만 그들을 결합하고 싶습니다 ... – user2895954

관련 문제