0

ビューコントローラーの下に2つのボタンがあります。それらのボタンの 1 つが計算を行います。2 つ目は、これらの計算に関する情報を示しています。参考までに、werkwijzeViewController という別のビューコントローラーへのモーダル セグエを使用しています。計算ボタンは問題を引き起こしません。情報ボタンを押すと、「UIStoryboardModalSegue popoverController]: 認識されないセレクターがインスタンスに送信されました」というメッセージが表示されます。どうしたの?関連するコードの一部をアップロードしています。

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;

...

-(void)prepareForSegue:(UIStoryboardSegue *)segue 送信者:(id)送信者{

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

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

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

   ...
}

@終わり

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
4

1 に答える 1

1

2 つのボタンに関連付けられているすべての IBAction メソッドのコードを投稿する必要があります。

問題は、prepareForSegue メソッドがセグエを盲目的に UIStoryboardPopoverSegue 型にキャストし、セグエの popoverController プロパティにアクセスしようとすることです。

prepareForSegue メソッドは、セグエごとに呼び出されます。UIStoryboardPopoverSegue にキャストする前に、segue 識別子をチェックして正しいセグエを扱っていることを確認する prepareForSegue のコードが必要です。

于 2013-10-28T17:38:02.283 に答える