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

#iphone

#iPhone

Вопрос:

Я создаю клиент-серверную программу для iphone, и я хочу использовать свой serverIP, который является частью моего второго представления, в первом представлении serverIP — это uitextfield. я использую для ввода значения ServerIP во втором представлении, но я хочу использовать значение serverIP В первом представлении.

«»файл интерфейса secondview.h»»

 #import <UIKit/UIKit.h>


@interface secondview : UIViewController {

    IBOutlet UIView *view;
    IBOutlet UITextField *serverIP;
    IBOutlet UITextField *noc;
    IBOutlet UIButton *save;
    IBOutlet UIButton *back;
    IBOutlet UIButton *load;
     IBOutlet UILabel *display1;
}

-(IBAction) back;
-(IBAction) save;
-(IBAction) load;

@property (nonatomic,retain) IBOutlet UITextField *serverIP; 
@property (nonatomic,retain) IBOutlet UITextField *noc;
@property (nonatomic , retain) IBOutlet UILabel *display1;


@end
  

«»secondview.m»» файл реализации

 #import "secondview.h"


@implementation secondview


@synthesize serverIP,noc,display1;


-(IBAction) save{

    [[NSUserDefaults standardUserDefaults] setInteger:serverIP forKey:@"save"]; 

    NSUserDefaults *myname = [NSUserDefaults standardUserDefaults];



    [serverIP resignFirstResponder];



}

-(IBAction) load {

    serverIP = [[NSUserDefaults standardUserDefaults] integerForKey:@"load"];

    NSUserDefaults *myname = [NSUserDefaults standardUserDefaults];





}


-(IBAction) back {

    [self.parentViewController dismissModalViewControllerAnimated: YES];
}



- (void)dealloc {
    [super dealloc];
}


@end
  

Ответ №1:

serverIP — это текстовое поле. Вы можете получить текст в нем как serverIp.text, чтобы вы могли сохранить его по умолчанию для пользователя как

 [[NSUserDefaults standardUserDefaults] setObject:serverIp.text forKey:@"save"];
  

Вы пытались сохранить само текстовое поле как целое в пользовательских настройках по умолчанию, что неверно.

Чтобы извлечь его, используйте

 NSString *serverIpString = [[NSUserDefaults standardUserDefaults] objectForKey:@"save"];
  

Комментарии:

1. @ pratikshabhisikar это не работает, и в функции загрузки отображается предупреждение «неиспользуемая переменная serveripstring

2. Конечно, в нем будет указано неиспользуемая переменная serveripString, если вы извлекаете ее из пользовательских настроек по умолчанию и ничего с ней не делаете. Дело в том, получаете ли вы правильную строку serverip из пользовательских настроек по умолчанию?

Ответ №2:

Сделайте это, чтобы сохранить:

 [[NSUserDefaults standardUserDefaults] setObject:serverIP.text forKey:@"save"];
  

и для извлечения:

 NSString *serverIPSTR = [[NSUserDefaults standardUserDefaults] objectForKey:@"load"];
  

Комментарии:

1. какую ошибку вы получаете? кстати, проблемы в опубликованном вами коде заключаются в следующем: вы пытаетесь установить текстовое поле внутри NSUserDefaults (вы не можете этого сделать), а также используете integerForKey, который (как следует из названия) хранит целые числа.

2. @ giuliano galea я не получаю никакой ошибки, но при загрузке ничего не отображается.

3. Я вижу, сделайте это также: serverIp.text = serverIPSTR;

Ответ №3:

 if ([[NSUserDefaults standardUserDefaults] objectForKey:@"load"] != nil) {
    serverIP = [[NSUserDefaults standardUserDefaults] objectForKey:@"load"];
} else {
    serverIP = @"Your default IP address";
    [[NSUserDefaults standardUserDefaults] setObject:serverIP ForKey:@"load"];
}
  

Хотя вместо ‘load’ я бы использовал что-то, что с меньшей вероятностью будет конфликтовать со значениями по умолчанию, такими как

myappname_serverip