Хотя я думаю, что у вас будет несколько более подробных вопросов по мере продвижения, похоже, вам нужно общее руководство, чтобы действительно начать.
Для начала я бы предложил, чтобы вы не хотели использовать один и тот же фрагмент для каждого из двух отображаемых вами вопросов, а два отдельных экземпляра одного и того же класса фрагмента. Например, я думаю, вы хотели бы иметь что-то вроде этого:
questionOneFragment = new BaseFragment();
questionTwoFragment = new BaseFragment();
Похоже, у вас есть список вопросов, и вы просто хотите отобразить два вопроса одновременно, поэтому я думаю, что единственное состояние, которое вам нужно поддерживать - это то, что данные номера вопроса должны отображаться в questionOneFragment
(questionTwoFragment
должны отображать данные для вопроса в списке после второго вопроса).
Все, что вам для этого понадобится, - это одно целое число firstDisplayedQuestion
, которое вы увеличиваете или уменьшаете, основываясь на щелчках по кнопкам prev
и next
. Вам нужно управлять границами этой переменной, чтобы она не опускалась ниже 0 или выше 1 ниже последнего элемента в вашем списке.
В вашем классе BaseFragment
вам нужно иметь методы, которые устанавливают элементы пользовательского интерфейса, которые вы хотите отобразить. Затем, когда нажимается кнопка prev
или next
, вы соответственно обновляете firstDisplayedQuestion
. Затем вы также получаете данные для вопроса в списке, соответствующем firstDisplayedQuestion
, и вызываете методы настройки отображения на questionOneFragment
, используя эти данные. Затем вы получаете данные для вопроса в списке, соответствующие firstDisplayedQuestion + 1
, и используете эти данные для установки элементов отображения questionTwoFragment
Взгляните здесь. Кажется, что каждому нужен набор параметров к команде компиляции.
Необходимо сказать компилятор, где заголовки GNUstep и платформы расположены. Самый легкий путь (по крайней мере, в системах Unix, я буду честен и скажу, что не использовал GNUstep в Windows), должен использовать, gnustep-делают. У Вас мог быть GNUstep-make-файл, столь же простой как
include $(GNUSTEP_MAKEFILES)/common.make
TOOL_NAME = hello
hello_OBJC_FILES = hello.m
include $(GNUSTEP_MAKEFILES)/tool.make
Я просто создал файл с именем «GNUmakefile» и добавил его в него:
include ${GNUSTEP_MAKEFILES}/common.make
TOOL_NAME = MyApp
MyApp_OBJC_FILES = code.m
include ${GNUSTEP_MAKEFILES}/tool.make
затем я просто набрал «make» в приглашении. Вывод записывается в obj \ MyApp.exe
, который сделал это для меня. винт набивает с помощью командной строки gcc.
Моя установка GNUstep находится в c: \ GNUstep \ GNUstep \ System. Если ваш другой, вам следует соответствующим образом изменить импорт Foundation.h.
Я сделал это:
/ / ---------- Hello.m
#import <../../GNUstep/System/Library/Headers/Foundation/Foundation.h>
int main(int argc, const char* argv[])
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
NSLog(@"Hello from Hello.m!");
[pool release];
return 0;
}
// ----------
Запускаем оболочку MinGW. (См. Выше.)
В командной строке оболочки перейдите в каталог, в котором находится программный код. (Обратите внимание, что, поскольку это не Unix, необходимо указать букву диска Windows.):
cd / c / myprogs / obj-c / hello
Скомпилируйте программу:
gcc -o hello hello. m -I / c / GNUstep / GNUstep / System / Library / Headers \
-L / c / GNUstep / GNUstep / System / Library / Libraries -lobjc -lgnustep-base \
-fconstant-string-class = NSConstantString
(Обратите внимание, что символ «\» позволяет нам расширить команду до нескольких строк. )
При компиляции я получаю следующие информационные сообщения:
Info: resolving ___objc_class_name_NSAutoreleasePool by linking to __imp____objc_class_name_NSAutoreleasePool (auto-import)
Info: resolving ___objc_class_name_NSConstantString by linking to __imp____objc_class_name_NSConstantString (auto-import)
При запуске получившегося hello.exe я получаю следующее:
2009-06-03 14:44:59.483 hello[1240] Hello from Hello.m!
Я бился головой об этом с помощью GNUStep под Windows. В простейших руководствах вы можете написать программу на C и скомпилировать ее с помощью GCC - если бы я хотел это сделать, я бы не стал возиться с GNUStep. Следующий уровень руководств представляет собой приветственный мир, включая заголовок Foundation и простой сценарий GNUmakefile, который затем не работает при установке Windows, поскольку вы в конечном итоге следуете инструкциям GNUStep. Я знаю, что нужно открыть установленную оболочку, но следование онлайн-руководствам по использованию файла GNUmakefile по-прежнему не помогло. Вы получили целую серию ошибок из-за попытки включить общий make-файл.
Оказывается, решение довольно простое, вам просто не говорят, что это нужно делать. Установщик не установил GNUSTEP_MAKEFILES. Если вы добавите переменную среды GNUSTEP_MAKEFILES со значением / GNUstep / System / Library / Makefiles, а затем повторно откроете оболочку, то запуск make в исходной папке с помощью сценария GNUmakefile может успешно включить общий make-файл и так далее.
Этого достаточно, чтобы создать из make-файла простое консольное приложение с включенным заголовком Foundation / Foundation.h, что предвещает хорошее, хотя мне придется дополнительно исследовать, есть ли еще какие-либо настройки, которые не были set, которые влияют, скажем, на GUI.
Процесс установки GNUstep для Windows
.
#import 'Foundation/Foundation.h'
int main (int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSLog (@"Anil Kumar Yadav has Run the First Objective C program!");
[pool drain];
return 0;
}
сохраните его как hello.m в папке C:/GNUstep/home/foldername. Помните foldername - это имя, когда вы первый раз запускаете оболочку, она создает envoirment и создает папку по имени вашего компьютера в папке C:/GNUstep/home. Так что не паникуйте. Хорошо
Поздравляю, вы успешно написали свою первую программу на Objective C. Если вам нужны какие-либо разъяснения, пишите мне по адресу: ayadav00009@gmail.com