私はiOS開発とオーバーフローを抱えています。私は、複数のUILabelとUITextFieldにユーザのデータを表示する必要があり、データはPOSTメソッドから取得されます。サーバーからデータを取得するのに少し時間がかかります。詳細を取得した後に要素を再読み込みまたは埋め込む方法。 これは私がコードを使用してサーバからデータを受信)(jsonからデータを取得した後で、データをUILabelsとUITextFieldにロードする
@interface EditProfileViewController()
@property (weak, nonatomic) IBOutlet UIImageView *displayPictureView;
@property (weak, nonatomic) IBOutlet UITextField *firstnameFeld;
@property (weak, nonatomic) IBOutlet UITextField *lastNameField;
@property (weak, nonatomic) IBOutlet UITextField *emailField;
@property (weak, nonatomic) IBOutlet UITextField *bdayField;
@property (weak, nonatomic) IBOutlet UIButton *calField;
@property (weak, nonatomic) IBOutlet UITextView *addressTextView;
@property (weak, nonatomic) IBOutlet UILabel *userIDLabel;
@property (weak, nonatomic) IBOutlet UILabel *phoneNumberLabel;
@property (weak, nonatomic) IBOutlet UIScrollView *editScrollView;
@end
@implementation EditProfileViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.editScrollView.delegate=self;
}
私のviewDidLoadで、私は(のviewDidLoadで、このPOSTメソッドを持っている)
NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: nil delegateQueue: [NSOperationQueue mainQueue]];
NSMutableURLRequest * urlRequest = [NSMutableURLRequest requestWithURL:urlEdit];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setHTTPBody:[editParameters dataUsingEncoding:NSUTF8StringEncoding]];
NSURLSessionDataTask * dataTask =[defaultSession dataTaskWithRequest:urlRequest
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSLog(@"Response:%@ \nError:%@\n", response, error);
if(error == nil)
{
NSString * text = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
NSLog(@"DataText = %@",text);
}
NSError *error2 = nil;
jsonDicEditAcc = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error2];
if (error2 != nil) {
NSLog(@"Error parsing JSON.");
}
else {
NSLog(@"JsonDictEditAcc: \n%@",jsonDicEditAcc);
[self dismissViewControllerAnimated:alert completion:nil];}
}];
[dataTask resume];
私は "jsonDicEditAcc" からデータを抽出し、データを取得する前にビューがロードされるため、データを取得した後、UILabelsとUITextFieldをどのように配置するかを知る必要があります。私はviewWillAppear()がうまくいきませんでした。
weakSelf.firstnameFeld = jsonDicEditAcc[@"<key-for-firstname>"];
また、あなたが見つけるかもしれない:それはあなたの場合(!ERROR2 = nilの)文の他の枝のようなコードを追加し、かなり簡単です
ことを確認してください。これらのラベルを最初から隠しておき、データがロードされたときにデータを割り当ててラベルを表示するか、何らかのアクシビティインジケータを使って何かが起きていることを示すことができます。 – Dalvik
データを受け取ってからuielementsを読み込むまでラベルを隠すにはどうすればいいですか? – alpha47