0
我正在創建一個應用程序,在第一個視圖中,用戶可以選擇登錄或註冊。在註冊視圖中是一個UITableViewCell
,點擊後,用戶將看到一個包含UITableView
和UIPickerView
的視圖。 UITableView
工作正常,但UIPickerView
,應該動態拉動它應該顯示的數據,使用網絡調用,顯示出來,但似乎完全空白。加入幾條NSLog
聲明,我注意到模型中使用AFNetworking
來提取數據的方法永遠不會被調用。我已經發布了UIPickerViewDelegate
和UIPickerViewDataSource
方法的代碼,以及應該在模型中提取數據的方法。提前致謝。AFNetworking數據獲取方法不叫
UIPickerViewDelegate
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row
forComponent:(NSInteger)component {
return [[self.brain classChoicesForSignUp] objectAtIndex:row];
}
UIPickerViewDataSource
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component {
size_t numberOfRows = [self.brain classChoicesForSignUp].count;
NSLog(@"Number of Rows: %@", [[NSNumber numberWithFloat:numberOfRows] stringValue]);
return numberOfRows;
}
SignUpPickerBrain.m
#import "SignUpPickerBrain.h"
#import "AFJSONRequestOperation.h"
@implementation SignUpPickerBrain
#pragma mark - Picker Data
- (NSArray *)classChoicesForSignUp {
NSLog(@"Class choices method called");
// Note that in my code, the actual URL is present here.
NSURL *url = [NSURL URLWithString:@"the URL"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSLog(@"Success!");
NSLog([JSON description]);
} failure:nil];
[operation start];
[operation waitUntilFinished];
NSLog([operation responseJSON]);
return [operation responseJSON];
}
@end
非常感謝您的回覆。不過,我有幾個問題。我認爲,當你正在處理提取數據和類似的事情時,你會使用像SignUpPickerBrain這樣的文件。你能詳細說明一下你的意思是什麼「適當的模型」?我也有點困惑,爲什麼我會給網絡請求方法一個阻止參數,因爲我沒有做任何事情,只是返回數據。儘管如此,我還是很陌生的,所以很容易成爲我在這裏看不到效用的原因。再次感謝您的所有建議。 – sethfri
作爲方法參數傳遞的塊將在網絡請求操作的完成(或成功/失敗)塊中執行。這種方式是異步的。再次,請查看AFNetworking中的iOS示例項目,以查看這個實例。 – mattt