UIViewController не распознает метод - PullRequest
0 голосов
/ 28 июня 2011

, пожалуйста, помогите мне решить эту проблему

У меня есть контроллер представления в стеке навигации с именем firstviewcontroller

FirstViewController.h

@class ImperialPickerController;
@class FractionPickerController;
@class MetricPickerController;

@interface FirstViewController : UIViewController {

    UIView *pickerViewContainer;

    ImperialPickerController *ImperialPickerController;
    FractionPickerController *FractionPickerController;
    MetricPickerController *MetricPickerController;

    UIView *ImperialPickerViewContainer;
    UIView *FractionPickerViewContainer;
    UIView *MetricPickerViewContainer;

    UISegmentedControl *segmentedControl;

    NSInteger selectedUnit;
}

@property(nonatomic,retain) IBOutlet UIView *pickerViewContainer;

@property(nonatomic,retain) IBOutlet UIView *ImperialPickerViewContainer;
@property(nonatomic,retain) IBOutlet UIView *FractionPickerViewContainer;
@property(nonatomic,retain) IBOutlet UIView *MetricPickerViewContainer;

@property(nonatomic,retain) IBOutlet ImperialPickerController *ImperialPickerController;
@property(nonatomic,retain) IBOutlet FractionPickerController *FractionPickerController;
@property(nonatomic,retain) IBOutlet MetricPickerController *MetricPickerController;

@property(nonatomic,retain) IBOutlet UISegmentedControl *segmentedControl;

-(IBAction)toggleUnit;

@end

FirstViewController.m

@implementation FirstViewController

@synthesize ImperialPickerController;
@synthesize FractionPickerController;
@synthesize MetricPickerController;
@synthesize ImperialPickerViewContainer;
@synthesize FractionPickerViewContainer;
@synthesize MetricPickerViewContainer;
@synthesize pickerViewContainer;
@synthesize segmentedControl;

define METRIC_INDEX 0
define IMPERIAL_INDEX 1
define FRACTION_INDEX 2



-(IBAction)toggleUnit
{
    selectedUnit = [segmentedControl selectedSegmentIndex];

    if (selectedUnit == METRIC_INDEX)
    {
        [MetricPickerController updateLabel1];
    }

}
@end

MetricPickerController.h

@interface MetricPickerController : NSObject <UIPickerViewDataSource,UIPickerViewDelegate> {

    UIPickerView *pickerView;
    UILabel *label;
}
@property(nonatomic,retain)UIPickerView *pickerView;
@property(nonatomic,retain)UILabel *label;

-(void)updateLabel1;

@end

MetricPickerController.m

import "MetricPickerController.h"

@implementation MetricPickerController

@synthesize pickerView;
@synthesize label;


-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 2;
}

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component

{
    return 10;
}

-(void)updateLabel1
{
    label.text = @"test"
}

проблема в том, что я получаю сообщение об ошибке при компиляции здесь в firstviewcontroller

-(IBAction)toggleUnit
{
    selectedUnit = [segmentedControl selectedSegmentIndex];

    if (selectedUnit == METRIC_INDEX)
    {
        [MetricPickerController updateLabel1]; <<<<< (MetricPickerController might not respond to +updateLabel1)!!
also if i click the toggle in IB xcode will crash with sigbart error 
    }

Может кто-нибудь, пожалуйста, помогите и посоветуйте, что я сделал неправильно, я думаю, что все правильно подключено, так что я думаю, что это как-то связано с объявлением моего метода

Я знаю, что код на этом не завершенэтап, но это сводит меня с ума, пытаясь избавиться от этой ошибки, и я надеюсь, что вы можете оценить, что я просто ученик

}

1 Ответ

5 голосов
/ 28 июня 2011

Проблема в том, что updateLabel1 является методом экземпляра, и вы отправляете его классу (+updateLabel1 вместо -updateLabel1 в сообщении об ошибке говорит вам об этом).

Поскольку вы называете свои переменные экземпляра так же, как классы, вы сможете решить эту проблему, написав

[self.MetricPickerController updateLabel1];

вместо этого - это дает понять компилятору, что вы ссылаетесь на переменную экземпляра, а не на фактический класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...