0

助けてください!簡単そうに見えますが、機能していないので、申し訳ありませんが、質問する必要があります。UITableViewを備えたメインビューがあります。スワイプすると、ピッカーとボタンを持つサブビューが追加されます。スワイプするとメインビューの前にサブビューが表示されますが、ピッカーまたはボタンをクリックしても、サブビューでは実際には何も起こりません。代わりに、メインビュー(サブビューの下にある)のコンポーネントが呼び出されます!これは確かに言っています。メインビューでは、追加されたサブビューの下に画像があります(画像をタップすると新しいビューが開きます)。これで、サブビューでピッカーをタップすると(メインビューでは画像がその下にあります)、画像がタップされて新しいビューが開きます。これはどのように可能ですか?

これは(Interface Builderの)サブビューです

ここに画像の説明を入力してください

これが私のコードスニペットです:

私のMainViewController.m(viewCtrlrFilterは、ユーザーがメインビューをスワイプしたときに追加されるサブビューです)):

....
self.viewCtrlrFilter = (ViewController_Filter *) [myStoryboard instantiateViewControllerWithIdentifier:kNameViewCtrlrFilter];
...
// This is called when the user pans/swipes
// This does work fine; the subview gets added & is visible
[self.viewCtrlrFilter initializeView];
[self.viewCtrlr.view setFrame:CGRectMake(310.0, 220.0, 243.0, 208.0)];
[self.view addSubview:self.viewCtrlrFilter.view];
...

ViewController_Filter.hから:

...
// This implements the Picker Delegate & DataSource
// which I have wired to the picker in IB
@interface ViewController_FilterPhotographers : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource>
...
// This is called when the button in the subview 
// (screenshot above) is pressed
// It's wired through the IB
-(IBAction) buttonPressed:(id) sender;
...

ViewController_Filter.mから:

-(void) initializeView {

    self.myPicker.delegate = self;
    self.myPicker.dataSource = self;
    self.myPicker.showsSelectionIndicator = YES;

    CGRect rect = self.myPicker.frame;
    rect.origin = CGPointMake(0.0, 0.0);
    self.myPicker.frame = rect;
    self.myPicker.transform = CGAffineTransformMakeScale(0.625,0.625);
    [self.myPicker becomeFirstResponder];
}
...
-(IBAction) buttonPressed:(id) sender {
    NSLog(@"hi");
}
...
- (void)viewDidLoad
{
    [super viewDidLoad];
    [self initializeView];
}
...

ユーザーがスワイプすると、サブビューが追加されます(ピッカーとボタンが表示されます)が、ボタンをクリックしても、IBActionメソッドが呼び出されません。代わりに、おかしなことに、メインビュー(サブビューの下)のコンポーネントが呼び出されています!

4

1 に答える 1

0

それは今動作します!コードとIBの両方からピッカービューのデータソースとデリゲートを設定するのが問題だったようです。IB から設定し、コードから削除しました。今はうまくいきます!

于 2012-08-18T06:30:01.877 に答える