Форум программистов, компьютерный форум CyberForum.ru

Навигация по страницам - Программирование iOS/iPhone

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
carkov_1990
19 / 8 / 1
Регистрация: 28.12.2012
Сообщений: 32
05.04.2013, 11:08     Навигация по страницам #1
Добрый день.
Я только начал изучать iOS. И сразу же возник вопрос. Используя storyboard можно сделать сегвей перемещением мыши например с кнопки на другую сцену, а как переходить от странице к странице программно?
Т.е. допустим происходит загрузка страницы и по какому то условию мы переходим на вторую страницу...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Klafter
0 / 0 / 0
Регистрация: 05.04.2013
Сообщений: 3
05.04.2013, 20:15     Навигация по страницам #2
Посмотри в этом http://www.youtube.com/watch?v=cvGJp...ature=youtu.be уроке
carkov_1990
19 / 8 / 1
Регистрация: 28.12.2012
Сообщений: 32
09.04.2013, 13:46  [ТС]     Навигация по страницам #3
Спасибо, большое. Но это немного не то, что я хотел.То что я хотел делается вот так
Objective-C
1
2
3
4
5
UIStoryboard *story=[UIStoryboard storyboardWithName:@"NameStoryBoard"];
UIViewController *controller1=[story instantiateViewControllerWithIdentifier:@"IDController1"];
UIViewController *controller2=[story instantiateViewControllerWithIdentifier:@"IDController1"];
if (условие) [self.navigationController pushViewController:controller1 anumated:YES];
else [self.navigationController pushViewController:controller2 anumated:YES];
Что то в этом духе
alexpac26
 Аватар для alexpac26
14 / 22 / 0
Регистрация: 20.01.2013
Сообщений: 125
11.04.2013, 13:46     Навигация по страницам #4
а как переходить от странице к странице программно
через макрос

Objective-C
1
2
3
4
5
6
7
8
#define story [UIStoryboard storyboardWithName:@"ИМЯ СТОРИ БОРДА" bundle:nil]
#define viewcontroller(name) [story instantiateViewControllerWithIdentifier:name]
#define GoToViewController(vc,name,anim) [vc.navigationController pushViewController:viewcontroller(name) animated:anim]
 
// использование
// если надо внезапно перейти на другой контроллер на стори боарде
 
GoToViewController(self, @"ИДЕНТИФИКАТОР КОНТРОЛЛЕРА",YES);
// где
self - текущий контроллер
@"ИДЕНТИФИКАТОР КОНТРОЛЛЕРА" - Навигация по страницам
YES - с анимацией или без нее

нужно помнить что IOS каждый такой переход хранит в кеше поэтому для перехода назад надо:

Objective-C
1
2
3
4
5
// переход НАЗАД
[self.navigationController popViewControllerAnimated:YES];
 
// переход в первый контроллер или в корень
[self.navigationController popToRootViewControllerAnimated:YES];
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
12.04.2013, 16:47     Навигация по страницам #5
alexpac26, а Вы можете объяснить свою ярую симпатию к макросам(уже не первую тему вижу ответ с макросами)? Чисто ради интереса спрашиваю. Потому что лично мне бы Ваш код(если так везде макросы были бы) читать было бы достаточно не комфортно.
alexpac26
 Аватар для alexpac26
14 / 22 / 0
Регистрация: 20.01.2013
Сообщений: 125
12.04.2013, 17:05     Навигация по страницам #6
Вы можете объяснить свою ярую симпатию к макросам
когда каждый день пишешь приложения и там практически постоянно встречаются подобные конструкции от 3 до 10 строк, то приходится их запаковывать в макрос чтобы все было в 1 строчку это как бы очевидно.

также с помощью макросов можно переименовывать и укорачивать стандартные, но очень часто используемые типы данных в Objective C

например

Objective-C
1
2
3
4
5
#define Strdin NSMutableString
#define String NSString
#define Dict NSMutableDictionary
#define Array NSMutableArray
#define Application [UIApplication sharedApplication]
сравним 2 кода

Objective-C
1
2
3
NSMutableArray *newitems = [NSMutableArray new];
NSMutableDictionary *mydict = [NSMutableDictionary new];
NSMutableString *str = [NSMutableString];
и
Objective-C
1
2
3
Array *newitems = [Array new];
Dict *mydict = [Dict new];
Strdin *str = [Strdin new];
нижний выглядит лаконично

также пример синглтона с ипользованием макроса

UtilClass.h
Objective-C
1
2
3
4
5
6
7
8
9
10
11
#import <Foundation/Foundation.h>
 
#define util [UtilClass getInstance]
 
@interface UtilClass : NSObject
 
+(UtilClass*) getInstance;
 
@property  NSString* hello;
 
@end
UtilClass.m
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#import "UtilClass.h"
@implementation UtilClass
 
static UtilClass* UtilClass_st = nil;
 
+(UtilClass*) getInstance {
    if (UtilClass_st==nil) {
        UtilClass_st = [UtilClass new];
        UtilClass_st.hello = @"hello world";
      // bla bla
}
return UtilClass_st;
}
 
@end
пример кода с синглтоном
Objective-C
1
NSLog(@"singlton string value is %@", util.hello);
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
12.04.2013, 17:54     Навигация по страницам #7
Данный прием у Вас используется командно, либо Вы работаете один?
Как другие разработчики встречая данный код, реагируют?

Добавлено через 5 минут
Придираюсь конечно, но данный дефайн неверен семантически.
Цитата Сообщение от alexpac26 Посмотреть сообщение
#define Array NSMutableArray
И для поддержания написанного Вами приложения, стороннему разработчику нужно будет лишний раз привыкать к Вашей семантике только ради того, чтобы писать в том же стиле, в котором изначально писался проект.
Что опять же некомфортно.

Цитата Сообщение от alexpac26 Посмотреть сообщение
3 до 10 строк
"Длинные выражения" намного удобнее выделить в отдельный, хорошоНазванный метод.
alexpac26
 Аватар для alexpac26
14 / 22 / 0
Регистрация: 20.01.2013
Сообщений: 125
12.04.2013, 19:24     Навигация по страницам #8
хорошоНазванный метод
глобальный метод синглтон класса?
ибо если он нужен везде!

Добавлено через 5 минут
Длинные выражения" намного удобнее выделить в отдельный, хорошоНазванный метод.
как например макрос получения адреса файла лежащего в ресурсах проекта

// файловая система

#define rootFilePath(path) [util.filepath stringByAppendingPathComponent: path]
#define rootFileResourcePath(filename) [util getRootResoursePath:filename]
где util это синглтон и весь расчет строки адреса идет в нем

Objective-C
1
NSData *d = [[NSData alloc] initWithContentsOfFile:rootFileResourcePath(@"hello.txt")];
Добавлено через 14 минут
в споре рождается истина, также можно использовать статические функции

Objective-C
1
2
3
static void sname(NSString *str) { 
    NSLog(@"dfddf %@",str); 
}
преимущества над макросами:

1) код подсвечивается
2) не граниченное количество строк
3) синтаксис вывода такой же (в круглых скобках)
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
12.04.2013, 19:33     Навигация по страницам #9
Цитата Сообщение от alexpac26 Посмотреть сообщение
2) не граниченное количество строк
Так и в дефайн Вы записать сколько угодно можете, в общем то.
А зачем Вам синтаксис языка Си, если Вы программируете используя Objective-C? (В общем случае он позволяет более точно и лаконично сформулировать основную идею того, что делает метод)
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
12.04.2013, 22:55     Навигация по страницам #10
alexpac26, мне тоже интересен ответ на этот вопрос.

Цитата Сообщение от zulkis Посмотреть сообщение
Данный прием у Вас используется командно, либо Вы работаете один?
Как другие разработчики встречая данный код, реагируют?
alexpac26
 Аватар для alexpac26
14 / 22 / 0
Регистрация: 20.01.2013
Сообщений: 125
17.04.2013, 14:42     Навигация по страницам #11
А зачем Вам синтаксис языка Си
функции в круглых скобках выгдят достаточно кратко, не перегружены текстом и квадратными скобками

аналог php функции explode

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static NSMutableArray* stringExplode(NSString * str, NSString * delemitter, bool empty) {
    NSMutableArray *a = [NSMutableArray new];
    NSArray *z = [str componentsSeparatedByString: delemitter];
    for (NSString *s in z) {
        if (s.length > 0 || empty) {
            [a addObject: [NSMutableString stringWithString:s]];
        }
    }
    return a;
}
 
//
 
NSArray *z = stringExplode(@"строка1;строка2;",@";",NO);
 
NSLog(@"%@",z);
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
17.04.2013, 15:43     Навигация по страницам #12
И коллеге второй набор SDK выучить всегда полезно. Один от Apple и второй - от alexpac26. Кстати, вы с завидным упорством игнорируете вопрос о своей команде и о ее отношении к вашему пристрастию...
alexpac26
 Аватар для alexpac26
14 / 22 / 0
Регистрация: 20.01.2013
Сообщений: 125
17.04.2013, 16:35     Навигация по страницам #13
Кстати, вы с завидным упорством игнорируете вопрос о своей команде и о ее отношении к вашему пристрастию...
видимо довольно большая пропасть между коммандным программированием и программированием как таковым, раз вы упорно хотите это узнать
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
17.04.2013, 16:48     Навигация по страницам #14
Цитата Сообщение от alexpac26 Посмотреть сообщение
видимо довольно большая пропасть между коммандным программированием и программированием как таковым, раз вы упорно хотите это узнать
Есть некоторые особенности...
Итак?
alexpac26
 Аватар для alexpac26
14 / 22 / 0
Регистрация: 20.01.2013
Сообщений: 125
17.04.2013, 16:57     Навигация по страницам #15
к вашему пристрастию
думаю пристастие к оптимизации кода всегда было есть и будет
Есть некоторые особенности...
соблюдение стандартов оформления кода?
думаю если работают от 3 человек с проектом то это скорее жизненная необходимость
Один от Apple и второй - от alexpac26
второй "SDK" набор методов которые используются очень часто, думаю есть у кадого программиста, чтобы дать ему силу достаточно написать к нему документацию..
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
17.04.2013, 17:03     Навигация по страницам #16
Цитата Сообщение от alexpac26 Посмотреть сообщение
думаю пристастие к оптимизации кода всегда было есть и будет
Оптимизировать можно по разным параметрам. В том числе и по легкости понимания.
Но в любом случае я хочу ответ. Четкий ответ на четко поставленный вопрос. По возможности честный. Неужели это так сложно?
alexpac26
 Аватар для alexpac26
14 / 22 / 0
Регистрация: 20.01.2013
Сообщений: 125
17.04.2013, 17:09     Навигация по страницам #17
мне не понятна ваша заинтересованность есть ли команда или нет. Или намекаете что у меня нет опыта командной разработки?

да, большого опыта именно в командной разработке нету.

Добавлено через 1 минуту
В том числе и по легкости понимания
я бы на первое место поставил легкость чтения ибо перегруженный код, хоть и без макросов и на стандартных методах на чистом Objective-C довольно гроздок и трудно читаем
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
17.04.2013, 17:12     Навигация по страницам #18
Вот и все. Это ж так просто
И ни на что я не намекаю. Просто интересно.

Спасибо за ответ.
Vorona
Peace 2 all shining faces
 Аватар для Vorona
661 / 523 / 44
Регистрация: 05.03.2010
Сообщений: 1,270
17.04.2013, 21:40     Навигация по страницам #19
alexpac26, ого, вам стоит прислушаться к советам, ибо вы делаете полнейшую фигню
я бы наотрез отказался работать с человеком, который пишет подобное, это ж как нужно ненавидеть окружающих себя коллег и платформу, чтобы так извращаться...
Приходишь, значит, на новый проект и видишь где-то среди нескольких тысяч классов какой-то Dict, да вас бы уволили за такое и потом никуда не взяли!
#define Strdin NSMutableString
#define String NSString
#define Dict NSMutableDictionary
#define Array NSMutableArray
#define Application [UIApplication sharedApplication]
мама родная...
был одногруппник, который называл переменные от балдны - mickeyMouse, suuuperCool и так далее, вы мне его напоминаете

Вижу, у вас есть познания в php, ничего не имею против языка, но который раз встречаюсь с людьми, которые с него начинали и росли в упорных говнокодеров

Вам же советую почитать книги по рефакторингу и ОО принципах вцелом, чтобы стать на путь истинный, а так же просто почитать пару хороших проектов на гитхабе
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2013, 22:08     Навигация по страницам
Еще ссылки по теме:

C# Переход по страницам в вк
Переход по страницам PHP
PHP БД Переход по страницам
Распределение по страницам PHP БД
Размер окна или навигация по страницам MS Excel

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
17.04.2013, 22:08     Навигация по страницам #20
Цитата Сообщение от Vorona Посмотреть сообщение
Вам же советую почитать книги по рефакторингу
Да вот, кстати, весьма недурная книжица на эту тему.
Yandex
Объявления
17.04.2013, 22:08     Навигация по страницам
Ответ Создать тему
Опции темы

Текущее время: 14:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru