Передача значения, хранящегося в IBAction, следующему Nib UITextField. - PullRequest
0 голосов
/ 18 февраля 2012

Я пытаюсь построить калькулятор, состоящий из набора значений постоянных и некоторых значений переменных.

Калькулятор сначала будет инициирован из UIButton, и я хочу сохранить число постоянных значений в UIButton, используя IBAction. Затем при нажатии на кнопку будет запущен калькулятор с отображением постоянного значения на UITextField.

Мой вопрос заключается в том, какой код я могу ввести, чтобы сохранить постоянные значения в коде IBAction и отобразить его в следующем файле пера UITextField. Ниже мой текущий код.

Большое спасибо.

 - (IBAction)runningtrack:(id)sender {

int length = 400;
int width = 30;

 track *myView3 =[[track alloc] initWithNibName:nil bundle:nil];
        [myView3 setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
        [self presentModalViewController:myView3 animated:YES];
    }

Ответы [ 3 ]

2 голосов
/ 18 февраля 2012

Вам необходимо объявить свойство в track классе или создать собственный метод init.

  1. Недвижимость

    track *myView3 =[[track alloc] initWithNibName:nil bundle:nil];
    track.valueForTextField = width; //valueForTextField is a int property in track class
    
  2. Выборочная инициализация:

    track *myView3 =[[track alloc] initWithNibName:nil bundle:nil andMyValue:width];
    
1 голос
/ 19 февраля 2012

Вам необходимо написать следующий пользовательский метод инициализации.

track *myView3 =[[track alloc] initWithNibName:nil bundle:nil customLength:400 customWidth:300];

Вы должны выполнить следующие шаги перед использованием вышеуказанного кода.

  1. В заголовочном файле track.h добавьте объявление пользовательского метода init.

    - (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle customLength:(int) customWidth:(int);

  2. В файле track.m добавьте определение пользовательского метода.

    - (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle customLength:(int) customWidth:(int) { /*You can use the customLength and customWidth here */}

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

Вы можете использовать методы делегата или легко (не предпочтительно) использовать NSUSerDefaults. Если вы используете NSUserDefaults, ваш код будет выглядеть примерно так.

- (IBAction)runningtrack:(id)sender {

int length = 400;
int width = 30;
NSNumber *theNumber = [NSNumber numberWithInt:<lenght&with or which int value you will save>];//NSUSerDefaults saves property list objects, so convert int to NSNumber
NSUserDefaults *savedValue=[NSUserDefaults standartuserdefault];
[savedValue setObject:theNumber forKey:@"myConst"];
 track *myView3 =[[track alloc] initWithNibName:nil bundle:nil];// by the way i don't think initWithNibName:nil give a proper response, it must crash
        [myView3 setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
        [self presentModalViewController:myView3 animated:YES];
    }

В другом классе (в котором есть .xib, для которого вы хотите отобразить значение tat)

  NSNumber *yourValue=[[NSUserDefaults standartuserdefault] objectForKey:@"myConst"];
UITextView *yourTextView=...
yourTextView.text=yourValue;
...