Событие возврата назад

Опубликовано 2015.05.13 в разделе Objective C.

Если у вас настроен push переход между контроллерами, и в NavigationController-е есть кнопка назад - можно зацепиться за событие возврата. Причём сделать это именно в первом контроллере, на который вы вернулись, а не просто перехват события нажатия кнопки назад во втором контроллере. В первом контроллере добавляете такой метод:
  1. - (void)viewWillAppear:(BOOL)animated
  2. {
  3. [super viewWillAppear:animated];
  4.  
  5. if (self.isMovingToParentViewController == NO)
  6. {
  7. //событие возврата из другого контроллера
  8.  
  9. }
  10.  
  11. }

Неактивная UITableViewCell

Опубликовано 2015.02.02 в разделе Objective C.

Если в таблице нужно сделать несколько строк не активными, то есть некликабельными - то в методе didSelectRowAtIndexPath можно заблокировать переход в другой контроллер:
  1. -(void)tableView:(UITableView *)TableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
  2. [TableView deselectRowAtIndexPath:[TableView indexPathForSelectedRow] animated:NO];
  3. }
Таким образом вы заблокируете переход по тапу на строку. Так же в методе cellForRowAtIndexPath можно задать стиль строки при тапе, точнее удалить его.

Шпаргалка по Objective C

Опубликовано 2015.01.28 в разделе Objective C.

Выровнять текст в элементе по центру:
  1. [anytextViewsetTextAlignment: NSTextAlignmentCenter];
Получить дочерние представления:
  1. - (void)listSubviewsOfView:(UIView *)view {
  2.  
  3. // получить детей главного представления
  4. NSArray *subviews = [view subviews];
  5.  
  6. // выход из функции если детей нет
  7. if ([subviews count] == 0) return;
  8.  
  9. for (UIView *subview in subviews) {
  10.  
  11. NSLog(@"subview = %@", subview);
  12.  
  13. // список детей детей
  14. [self listSubviewsOfView:subview];
  15. }
  16. }

Изменение типа данных в Objective C

Опубликовано 2015.01.28 в разделе Objective C.

Так как Objective C строго типизирован - иногда приходится менять тип данных, хоть и выглядят они порой совсем одинаково. Я сразу приведу примеры кода. NSInteger -> NSString
  1. NSString *myString = [NSString stringWithFormat: @"%d", myNSInteger];
NSNumber -> float
  1. float myFloat = [myNSNumber floatValue];
Int -> NSInteger
  1. NSInteger *myNSInteger = (NSInteger) myInt;
float -> int
  1. int myInt = (int) myFloat;

NSURLRequest с использованием timeoutInterval

Опубликовано 2015.01.28 в разделе Objective C.

Сделать удалённый запрос к серверу, не забывая о таймауте достаточно просто. Допустим у вас есть URL с которого вам нужно получить данные. И если данные не получены за 5 секунд - то выдаём ошибку. В приведённом примере я получаю JSON строку и преобразую её в словарь NSDictionary. Создаём класс с именем Requests. В .h файле:
  1. -(NSDictionary*) getRequestResponse:(NSString*)url;
В .m файле:
  1. -(NSDictionary*) getRequestResponse:(NSString*)url{
  2. //задаю таймаут в 5 секунд

UIRefreshControl для UIViewController

Опубликовано 2015.01.28 в разделе Objective C.

Если использовать табличное представление - то в настройках Storyboard даже есть специальный чекбокс, который включает обновление представления при свайпе вниз. У обычного UIViewController такой опции нет. Но её легко добавить программно: В методе viewDidLoad пропишите:
  1. UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];//инициализация
  2. refreshControl.backgroundColor = [UIColor purpleColor];//добавим фиолетовый фон
  3. refreshControl.tintColor = [UIColor whiteColor];//установим белый шрифт