2013-10-28 69 views
0

我在视图控制器下有两个按钮。其中一个按钮进行计算。第二个显示有关这些计算的信息。对于我使用模态segue到另一个称为werkwijzeViewController的视图控制器的信息。计算按钮不会造成问题。在按下信息按钮时,我得到“UIStoryboardModalSegue popoverController”:无法识别的选择器发送到实例“。怎么了?我上传了一些相关代码:由于实例选择器,模态segue不会启用

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; 

...

- (空)prepareForSegue:(UIStoryboardSegue * )segue发件人:(id)发件人{

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

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

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

    ... 
} 

@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 

breuk.m

#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

你应该张贴的代码为您的所有IBAction为方法绑到你的两个按钮。

看起来像我这样的问题是,您的prepareForSegue方法一味地将您的segue转换为键入UIStoryboardPopoverSegue,然后尝试访问segue的popoverController属性。

您的prepareForSegue方法将被称为每个segue。你需要在你的prepareForSegue中使用代码来检查segue标识符,以确保在处理UIStoryboardPopoverSegue之前处理正确的Segue。

+0

我按照你的意见。问题是以下几点:我首先做popover,然后按popover外面,然后我想参加模态赛。正如你所建议的ios认为segue仍然是popover。我怎样才能将赛格变成模态?如果我不首先点击弹出式按钮,模式的代码将起作用。但是我想把它们结合起来...... – user2895954