2012-05-04 6 views
4

iOSプログラミングが新しく、この単純な概念が機能しない - ポップアップコントローラがメソッドを呼び出してデータを送信できるようにしたい親コントローラ上に表示されます。誰でも私がここで間違っていることに気付くことができますか? DetailViewController.hIOS5 iPadポップアップコントローラデリゲートが親コントローラにメッセージを送信しない

DetailViewController.mで
#import <UIKit/UIKit.h> 
#import "Employee.h" 
#import "CompleteViewController.h" 

@class EmployeesTVC; 


@interface DetailViewController : UIViewController <UISplitViewControllerDelegate, UIPopoverControllerDelegate> 

@property (strong) UIPopoverController *popController; 

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

(無関係な部品を取り出した)

@implementation DetailViewController { 
    __weak UIPopoverController *completePopover; 
} 

// ... 

#pragma mark - Complete/Score popover methods 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    NSLog(@"preparing for segue"); 
    UIStoryboardPopoverSegue *popoverSegue = (UIStoryboardPopoverSegue *)segue; 
    UIPopoverController *scorePopoverController = [popoverSegue popoverController]; 
    [scorePopoverController setDelegate:self]; 
    self.popController = scorePopoverController; 
} 

- (IBAction)completeButtonPressed:(id)sender { 
    if (completePopover) { 
     [completePopover dismissPopoverAnimated:YES]; 
    } else { 
     [self performSegueWithIdentifier:@"showScorePopover" sender:sender];  
    } 
} 

- (void) scoreAssigned:(NSString *)score { 
    NSLog(score); 
    NSLog(@"Score Assigned"); 
} 

// ... 

@end 

CompleteViewController.h(ポップアップ・ビュー・コントローラ)

#import <UIKit/UIKit.h> 

@protocol CompleteViewDelegate <NSObject> 
- (void)scoreAssigned:(NSString *)score; 
@end 


@interface CompleteViewController : UIViewController 

@property (nonatomic, assign) id<CompleteViewDelegate> delegate; 

- (IBAction)okButtonPressed:(id)sender; 

@end 

CompleteViewController。 m

#import "CompleteViewController.h" 

@implementation CompleteViewController 
@synthesize delegate; 


- (IBAction)okButtonPressed:(id)sender { 
    NSLog(@"OK Button Pressed"); 
    [delegate scoreAssigned:@"100"]; 
} 

@end 

答えて

0

あなたの最初のNSLogの発言は発砲していますか? 「OKボタン押下」。そうでない場合は、(IBAction)okButtonPressedがInterface Builderに組み込まれていることを確認してください。もしそうなら、[delegate scoreAssigned:@ "100"]のブレークポイント。デリゲートが正常に割り当てられているかどうかを確認するために、マウスで「デリゲート」の上にカーソルを置いてください。これで問題が解決しない場合は、作業が停止する前にどこに到達しているのか正確にお知らせください。適切UIPopoverController

[completePopover setDelegate:self]; 
[completePopover presentPopoverFromBarButtonItem:yourButtonItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
//or if you don't have a bar button item 
[completePopover presentPopoverFromRect:CGRectMake(0.0, 0.0, 0.0, 0.0) inView:yourTargetView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

を提示

は、InViewは、例えばUIButtonのように、のUIViewのサブクラスできることに注意してください。

+0

「OKボタン押下」が発生しており、デリゲートはnilではありません。アプリはクラッシュしない、それ以上のことはしない。 –

+0

Interface Builderで割り当てられた代理人は?それがあなたが割り当てたものを上書きしているのかどうか疑問に思います。 – bgolson

+0

ああ待ってください。私はそれが実際にはnullだと思う、私はそれを実現していない。 IBに割り当てられた代理人はいません。役立つ場合、詳細ビューは分割ビューの詳細ビューです。 –

関連する問題