2016-01-02 2 views
1

В популярном приложении Instagram при нажатии на пользователя отображается их профиль. Если вы нажмете на другое имя пользователя (в комментарии на фото может быть), то он показывает профиль второго человека.Segue для новой версии текущего контроллера вида

Я пытаюсь достичь чего-то подобного с помощью Objective-C и раскадровки. У меня есть то, что вы можете считать страницей учетной записи, и внутри этой страницы другие пользователи. Я могу перейти на одну страницу учетной записи, но у меня возникают проблемы с получением этого бесконечного потока страниц аккаунта, который вы увидите в приложении, таком как Instagram, одна из причин заключается в том, что вы не можете выполнить segue на том же контроллере представления. Я попытался обойти это, программно представляя новую страницу учетной записи, когда вы нажимаете на нового пользователя на странице учетной записи, но я столкнулся с множеством ошибок.

Что такое способ, которым я могу достичь этого бесконечного потока контроллеров же просмотреть (очевидно, я использую navigationController, так что, вероятно, были предложен мной).

EDIT Используя решение, предоставленное @tmac_balla (спасибо за помощь), я могу непосредственно перейти к новому tableview но tableView пустые, и я получаю следующее сообщение об ошибке.

*** Assertion failure in -[UITableView  _configureCellForDisplay:forIndexPath:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit- 3512.30.14/UITableView.m:7962 
2016-01-02 17:06:46.765 Quoter[1631:845864] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView (<UITableView: 0x146096000; frame = (0 0; 320 568); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x1456c19b0>; layer = <CALayer: 0x1456c0330>; contentOffset: {0, -64}; contentSize: {320, 400}>) failed to obtain a cell from its dataSource (<_UIFilteredDataSource: 0x145727b20>)' 

EDIT 2 Используя решение, предоставляемое @Daniel T. Я нахожусь в состоянии выдвинуть новый контроллер представления в стек навигации и не tableView части контроллера работает нормально, но когда дело доходит до клеток в tableView У меня (в моем коротком тестировании) см. сценарий, в котором ячейки не появляются на новом tableView, а скорее появляются на предыдущем. Не уверен, что это только моя ошибка в том, как я загружаю ячейки или проблемы с решением.

ответ

0

Просто сделайте SEGUE к тому же контроллеру представления. Вот пример кнопки, которая перетекает в (другой копии) контроллера представления он находится.

enter image description here

+0

Таким образом, он нажимает на новый контроллер вида, и контроллер вида видим. Но есть довольно странная ошибка. Иногда ни одна из ячеек не появляется на новом контроллере представления, и они отображаются на предыдущем. Любая помощь? @Daniel T. – brettf

+1

Новый контроллер просмотра означает новый набор ячеек. Убедитесь, что вы правильно их инициализируете. –

0

Когда нажата кнопка/кнопка, вам нужно будет нажать контроллер вида в свой UINavigationController, а не использовать segues. Поэтому, когда ваш метод вызывается, вы пишете

accountViewController account = accountViewController() 
account.someTextField.text = "someText" 
self.navigationController.pushViewController(account, animated: YES); 

, который создает новый экземпляр того же VC и толкает его на экран.

об ошибке, попытайтесь проверить, если ячейка существует и инициализации, если он не

var cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell 

    if (cell == nil) { 
     cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "Cell") 
    } 
} 
+0

Но как бы я сделать переход использовать в 'prepareForSegue' как я не могу непосредственно перейти к тому же контроллеру представления в раскадровке @tmac_balla – brettf

+0

@bretf вам не нужно переходить на ** тот же ** вид. Раскадровка просто говорит вам, что существует один сеанс между одним контроллером представления и другим. Но на самом деле вы создаете новый экземпляр accountVC для каждой учетной записи, когда это необходимо (ссылка нажата). Затем вы используете кнопку возврата в _UINavigationBar_, чтобы вернуться к предыдущей учетной записи. –

+0

@ bretf О, я вижу. Nevermind, вам следует нажать VC в контроллер навигации. Отредактированный ответ –