Как передать UIscrollview для использования классом делегата - PullRequest
0 голосов
/ 02 февраля 2012

Я не новичок в делегатах, но я новичок в синтаксисе создания делегата в своем собственном классе.

По сути, у меня есть делегат PickerView, который я создал в своем собственном классе. Я хочу иметь возможность поместить выделенный текст в текстовое поле в UIScrollView, который был объявлен в моем ViewController. Однако я не знаю синтаксис, чтобы показать делегату представление. Вот файлы .h и .m делегата. Если есть какие-либо другие недостающие компоненты, мне нужно, чтобы мой ViewController увидел моего делегата, которого у меня нет, пожалуйста, дайте мне знать. Ошибка в методе didSelectRow.

RadioPickerDelegate.h

 #import <Foundation/Foundation.h>
 @class MissionInputViewController;


 @interface RadioPickerDelegate : NSObject<UITextFieldDelegate>{
   NSArray *radioOptions;
 }
 @property (nonatomic, retain) NSArray *radioOptions;


 @end

RadioPickerDelegate.M

#import "RadioPickerDelegate.h"
#import "MissionInputViewController.h"

@implementation RadioPickerDelegate

@synthesize radioOptions;

- (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component {
    // Handle the selection
    UITextField *textField =  (UITextField *)[inputsView viewWithTag:pickerView.tag];
    textField.text = [radioOptions objectAtIndex:row];


     //The error is at the inputsView value.  That is my UIScrollView from the view controller

}

// tell the picker how many rows are available for a given component
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {

    return 2;    

}

// tell the picker how many components it will have
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
    return 1;
}

// tell the picker the title for a given component
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    radioOptions = [[NSArray alloc] initWithObjects: @"Yes", @"No"];

   return [radioOptions objectAtIndex:row];


}

// tell the picker the width of each row for a given component
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {
    int sectionWidth = 200;

    return sectionWidth;
}



@end

По сути, я хочу создать PickerView в моем ViewController и заставить его использовать этот делегат. Затем этот делегат должен обновить текстовое поле в UIScrollView в моем ViewController. Мне нужно как-то, чтобы этот делегат видел / использовал этот UIScrollView (inputView).

Спасибо

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Отредактировано снова


класс контроллера вашего представления
здесь вы передаете ссылку на свое текстовое поле (скажем, textFiledSV) классу радио-выбора

//set the delegate where you have created the object of RadioPickerDelegate class
radioPickerDelegateObject.textField = yourTextField;


RadioPickerDelegate.h file

#import <Foundation/Foundation.h>
@class MissionInputViewController;


@interface RadioPickerDelegate : NSObject<UIPickerViewDelegate>{
    NSArray *radioOptions;
    //Text Field so that we can set it's value
    UITextField *textField;
}
@property (nonatomic, retain) NSArray *radioOptions;
@property (nonatomic, assign) UITextField *textField;

@end


Файл RadioPickerDelegate.m

#import "RadioPickerDelegate.h"
#import "MissionInputViewController.h"

@implementation RadioPickerDelegate

@synthesize radioOptions;
@synthesize textField;

- (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component{
   //here you are setting the text of the text field which was passed priviously (textFiledSV) thus it changes the text of the textField of you UIScrollView
   textField.text = [radioOptions objectAtIndex:row];  
}

//other method definitions

@end
0 голосов
/ 02 февраля 2012

Я уверен, что ошибка от inputsView, которая нигде не объявлена.

И ваш интерфейс говорит, что она соответствует UITextFieldDelegate вместо < UIPickerViewDelegate>

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