2011-08-11 35 views
5

Bất kỳ ai biết cách điền, ví dụ danh sách các danh mục, từ dịch vụ web vào UIPickerView? Ngoài ra, có thể đặt vào một giá trị ẩn không?Cách điền dữ liệu từ một dịch vụ web vào UIPickerView? [Phát triển ứng dụng iOS]

Ví dụ,
"Công" với id ẩn của "1"
"Thành viên" với id ẩn của "2" và vân vân ..

Những 2 giá trị là là từ webservice. Tôi đang sử dụng khung ASIHTTPRequest bằng cách này.

Tôi là một newbie trong iOS/XCode/Objective C. Hy vọng ai đó có thể giúp đỡ): Cảm ơn bạn

đáp ứng =============== === =============

@MSgambel
Được rồi, hãy cố gắng hết sức để giải thích. Hiện tại, cách chúng tôi đặt các mục vào UIPickerView là:

[mảng NSArrayWithObjects: @ "John Appleseed", @ "Chris Armstrong", @ "Serena Auroux", @ "Susan Bean", @ "Luis Becerra", @ "Kate Bell", @ "Alain Briere", nil];

thay vì các mục ở trên, làm cách nào để điền các mục từ webservice vào bộ chọn?

@Akshay
Điều tôi muốn nói là bộ chọn sẽ có 2 giá trị, nhưng chỉ nhãn "Công khai" hiển thị trên bộ chọn chứ không phải id "1". Tôi muốn thực hiện nó tương tự như một trình đơn thả xuống trên các trang web.

Trong một cơ sở dữ liệu được gọi là "Tên miền" chúng tôi có giá trị trong các định dạng sau:
DomainID: DomainName
1: Công
2: companyÃ
3: CompanyB
Sẽ có cơ sở dữ liệu khác "Người dùng" nơi nó được gắn với DomainID. (Chỉ cần một ví dụ)


Bộ chọn sẽ hiển thị "Công khai" trên giao diện, khi người dùng chọn nó, nó sẽ có giá trị là "1". Vì vậy, có anyway tôi có thể làm một điều như vậy?

+0

Nếu bạn giải thích điều bạn muốn tốt hơn, chúng tôi sẽ giúp bạn dễ dàng hơn! – msgambel

+0

Bạn có ý nghĩa gì với giá trị/id ẩn? – Akshay

+0

Tôi đăng lại câu hỏi của mình. Tôi không thực sự giỏi giải thích một cách trung thực, tôi không đủ kinh nghiệm với các thuật ngữ và công cụ kỹ thuật. Cảm ơn bạn đã thông báo câu hỏi của tôi. – daney

Trả lời

1

Trước hết, bạn chưa cung cấp nhiều chi tiết về chi tiết dịch vụ web của mình. Giả sử nó là SOAP dựa trên sau đó tôi khuyên bạn nên sudzc hoặc wsd2lobjc. Chúng sẽ tạo mã cho bạn để chuyển đổi WSDL của bạn thành các lớp Objective C khá độc đáo.

Đối với câu hỏi về giá trị "ẩn" của UIPickerView, giá trị này khá đơn giản. Tạo một số NSArray của NSDictionaries.Sử dụng ví dụ của bạn (giả sử tất cả là chuỗi):

NSDictionary *dictOne = [NSDictionary dictionaryWithObjectsAndKeys:@"1",@"realValue",@"Public",@"looksGoodValue",nil]; NSDictionary *dictTwo = [NSDictionary dictionaryWithObjectsAndKeys:@"2",@"realValue",@"CompanyA",@"looksGoodValue",nil]; NSDictionary *dictTre = [NSDictionary dictionaryWithObjectsAndKeys:@"3",@"realValue",@"CompanyB",@"looksGoodValue",nil];

array = [NSArray arrayWithObjects:dict1,dict2,dict3,nil];

và trong phương pháp UIPickerViewDelegate bạn

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {

return [[self.array objectAtIndex:row] objectForKey:@"looksGoodValue"];

}

và cuối cùng trong bất cứ điều gì bạn sử dụng pickerview cho (nói dịch vụ web của bạn)

request.realValue = [[self.array objectAtIndex:[pickerView selectedRowInComponent:0]] valueForKey:@"realValue"];

Hy vọng điều này giúp!

+0

Cảm ơn Justin, sẽ thử cái này! – daney

+0

@tacos_tacos_tacos nó hoạt động Cảm ơn – nivritgupta

0

Tôi sẽ lưu các giá trị đó vào một danh sách thuộc tính, sau khi bạn đã tải chúng bằng ASIHTTPRequest. Để lưu tệp, hãy sử dụng

`NSArray * paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);

NSString * documentsDirectory = [đường dẫn đối tượngAtIndex: 0];

NSString * path = [documentsDirectory stringByAppendingPathComponent: @ "data.plist"];

NSMutableArray * array = [[NSMutableArray alloc] init]; [mảng addObject: [NSArray arrayWithObjects: [NSString stringWithFormat: @ "% @", stringOne], // thêm tất cả các chuỗi của bạn như thế nil]]; [mảng writeToFile: đường dẫn nguyên tử: YES]; `

Sau đó, sử dụng [NSMutableArray alloc] initWithContentsOfFile:path] để tải giá trị của bạn vào bộ chọn khung nhìn.

+0

Cảm ơn Maxner, điều này có thể hữu ích (: – daney

Các vấn đề liên quan