Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Клик по кастом-строке таблицы - переход

привет всем
начал изучать разработку под ios на swift
в общем всё плохо

я легко могу сделать вызов нового окошка (activity) под android, но не могу толком программно вызвать отображение нового окошка чтобы была в открывшемся кнопочка < Back
при клике на определенную строку таблицы я отображаю первый или второй контроллер
при этом до лампочки есть ли хоть какая-то связь между текущим контроллером и FirstViewController. оно работает, но нет кнопки назад.
а вот если назначить segue action show внутри FirstViewController на кнопку чтобы отобразило еще новый контроллер, то всё нормально

в общем заморочка только с программным открытием segue, чтобы была связь с предыдущим конроллером

Код

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        switch indexPath.row {
        case 0:
            let vc = self.storyboard!.instantiateViewControllerWithIdentifier("FirstViewController");
            self.presentViewController(vc, animated: true, completion: nil);
            break;
        case 1:
            let vc = self.storyboard!.instantiateViewControllerWithIdentifier("SecondViewController")    ;
            self.presentViewController(vc, animated: true, completion: nil);
        default:
            break;
        }
    }


как выглядит сторибоард см. вложенный файл

может я не ту функцию вызываю? или где-то не связываю вызванный контроллер с родителем?

Присоединённый файл ( Кол-во скачиваний: 0 )
 
Ответ:
всё. сам решил
нужно было завернуть первый экран в navigation controller
и код переделать так:
Код

let toShow = self.storyboard?.instantiateViewControllerWithIdentifier("SecondViewController");
self.navigationController?.pushViewController(toShow!, animated: false);

Вопрос: Программное создание контролера или варианты реализации меню с подменю на UITableView

 Добрый день!
Имею идею создать список пунктов меню на UITableView. По клику на cell должен совершатся переход в подменю, тоже из UITableView и так далее. Глубина подменю заранее не известно и в процессе варьируется. 
Начал делать так: Создал в сториборд TableViewController для корневого меню, и, от него через segue для меню первого уровня и тут понял что заранее неизвестно количество таких переходов. Помогите решить эту проблему. Может есть какие-то патерны для подобных проблем или создание контролера и сегвея возможно программным путем (если да-как?) или вообще это решается по-другому? 
Ответ:
1) Забей на сториборд

2) я могу предложить пару решений 
первое, при выборе пункта меню, менять данные, с которых рисуется меню и вызывать reloadData.

второе, при выборе пункта меню, пушить новый контролер, в котором отображать UITableView с нужными данными.
при таком подходе будет работать стандартная навигация. 
Вопрос: TextField на CustomCell почему-то неактивно.

Таблица состоит из , CustomCell-ячеек (TableViewCell), на которых расположены текстовые поля (для ввода значения).  Почему-то при клике на поле ничего не происходит (ни поле активным не становится, ни клавиатура виртуальная не вылетает).  Более того, на 100% не уверен, но вроде бы и программно это поле не меняется.
Ответ:
ммм... ирония вполне законна, спасибо... :good 

хорошо.  код в Контроллере:
Код


- (UITableViewCell *) tableView:(UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSUInteger row = [indexPath row];
    NSMutableDictionary* tmpDict = [groupsArray objectAtIndex:row];

    static NSString *identID = @"GroupCell";
    GroupCell* cell = nil;
    cell = (GroupCell *) [tableView dequeueReusableCellWithIdentifier: identID];
    
    if(!cell)
    {
        NSArray* topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"GroupCell" owner:nil options:nil];
        for (id currentObject in topLevelObjects)
        {
            if ([currentObject isKindOfClass:[GroupCell class]])
            {
                cell = (GroupCell *) currentObject;
                break;
            }
        }
    }
    
    cell.groupId.text = [tmpDict objectForKey:@"collection_id"];
    cell.groupName.text = [tmpDict objectForKey:@"name"];
    
    return cell;    
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSUInteger row = [indexPath row];
    NSMutableDictionary* texts = [groupsArray objectAtIndex:row];
    
    MySingleton* st = [[MySingleton alloc] init];
    [st setArtgroupName:[texts objectForKey:@"name"]];
    [st setArtgroupId:[texts objectForKey:@"collection_id"]];
    
    ArticleViewController *ac = [[ArticleViewController alloc] initWithNibName:nil bundle:nil];
    ac.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentViewController:ac animated:YES completion:nil];
    
    return;
}


код ячейки:
Код

+(GroupCell *) cell
{
    NSArray* objects = [[NSBundle mainBundle] loadNibNamed:@"GroupCell" owner:nil options:nil];
    return [objects objectAtIndex:0];
}

+(NSString *) cellID {return @"GroupCell";}


объявление контроллера:

Код

@interface GroupViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>