Как добавить значения в uipickerview из базы данных sqlite? - PullRequest
0 голосов
/ 16 февраля 2011

Я новичок в sqlite, а также в программировании, Я пытаюсь сделать это от недели и не могу продвинуться немного вперед. Я видел, как вы помогли многим, и я думаю, что вы можете решить мою проблему. Я много писал, но не получил никакого ответа ни от кого этот . Вы можете связаться со мной: smrafiqsmd@gmail.com

Сначала я должен создать два отдельных представления uipicker для одного и того же представления. В этом представлении выбора необходимо вставить значения из таблиц базы данных sqlite. В первом представлении я должен получить значения из первой таблицы sqlite. А во втором представлении я должен получить значения из второй таблицы, сравнивая с идентификатором. виды должны быть одинаковыми.

Table1: квалификация

квалификация CREATE TABLE (id INTEGER PRIMARY KEY, имя VARCHAR (50), описание TEXT);

INSERT INTO «Квалификационные» ЗНАЧЕНИЯ (1, «P.G», «Post Graduation»);

INSERT INTO «Квалификационные» ЗНАЧЕНИЯ (1, «Степень», «При выпуске»);

INSERT INTO «Квалификационные» ЗНАЧЕНИЯ (1, «Ten + Two», «College»);

Table2: курс

CREATE TABLE Course (Id Integer primarykey, целое число, name1 varchar (20), текст описания1 (30));

INSERT INTO «ЦЕННОСТИ» курса (1,1, «MCA», «Мастер в компьютерах»); INSERT INTO «Курс» ЦЕННОСТИ (2,1, MBA, Master of Bussiness); ВСТАВЬТЕ В ЦЕННОСТИ "Курс" (3,2, бакалавр, бакалавр наук); ВСТАВЬТЕ В СТОИМОСТЬ «Курс» (4,2, «BCom», «Бакалавр по счетам»); ВСТАВЬТЕ В СТОИМОСТЬ «Курс» (5,3, «MPC», «Математика»); INSERT INTO "Курс" ЦЕННОСТИ (5,3, «БПЦ», «Биология»);

См. В первой таблице я получу значения P.G, Degree, Ten + Два

когда я нажимаю P.G, он должен отображаться в текстовом поле, а во втором окне выбора я должен получать только те значения, которые соответствуют «id» квалификации с «номер» конечно.

И когда мы выбираем значение, оно должно отображаться в текстовом поле. Спасибо

1 Ответ

0 голосов
/ 04 июля 2011

Я создал проект, чтобы показать вам, как делать то, что вы просите.

Вы можете скачать проект здесь:

http://www.crowsoft.com.ar/downloads/twoPickerViews.zip

Aочень хороший учебник для sqlite в iPhone можно найти здесь:

http://www.icodeblog.com/2008/08/19/iphone-programming-tutorial-creating-a-todo-list-using-sqlite-part-1/

Для управления PickerView необходим массив для хранения данных.

Я объявил дваклассы (Qualification и Course) для представления ваших таблиц и две переменные NSMutableArray для хранения данных.

Чтобы связать два PickerView, вам необходимо реализовать UIPickerViewDataSource и UIPickerViewDelegate в вашем контроллере представления:

@interface twoPickerViewsViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate> {

чтобы ответить, когда пользователь выберет квалификацию, которую нужно кодировать didSelectRow:

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
   // And now the final part of the UIPickerView, what happens when a row is selected.
   if (thePickerView == qualificationsPicker) {
       if (row >= 0 && row < [m_qualifications count]) {
           m_selectedQualification = [m_qualifications objectAtIndex:row];    
           qualificationName.text = m_selectedQualification.qualificationName;
           [self getCourses];
           [coursesPicker reloadAllComponents];
       }
   }
}

Вам нужно кодировать еще три метода: numberOfComponentsInPickerView, numberOfRowsInComponent, titleForRow:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView {
   // This method needs to be used. It asks how many columns will be used in the UIPickerView
   return 1; // We only need one column so we will return 1.
}

- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {
   // This method also needs to be used. This asks how many rows the UIPickerView will have.
   if (thePickerView == qualificationsPicker) {
       return [m_qualifications count]; // We will need the amount of rows that we used in the pickerViewArray, so we will return the count of the array.
   }
   else {
       return [self getCourses];
   }
}

- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
   // This method asks for what the title or label of each row will be.
   if (thePickerView == qualificationsPicker) {
       Qualification *qualification = [m_qualifications objectAtIndex:row];
       return qualification.qualificationName; // We will set a new row for every string used in the array.
   }
   else {
       Course *course = [m_selectedCourses objectAtIndex:row];
       return course.courseName;
   }    
}
...