#ios #objective-c #uitableview #didselectrowatindexpath
#iOS #objective-c #uitableview #didselectrowatindexpath
Вопрос:
Я создаю интерфейс, в котором есть UITableView с четырьмя пользовательскими UITableViewCell. И все остальные UITableViewCell также имеют UITableView. Это означает, что у меня есть TableView внутри TableView.
Позвольте мне вызвать первый TableView — ParentTableView и вложенный TableView — ChildTableView. Итак, я реализовал метод didSelectRowAtIndexPath для обоих TableView. Но когда приложение запущено, вызывается только метод ChildTableView. Мне нужно знать внутри ParentTableView, какая ячейка прослушивается.
Как я могу перенести эту информацию дальше из ChildTableView в ParentTableView.
Возможно, это глупый вопрос, но пока я не могу найти никакого надежного решения, поэтому, пожалуйста, помогите мне.
Заранее благодарю вас, добрый сэр
Комментарии:
1. Почему вы помещаете табличное представление внутри ячейки другого табличного представления?
2. Я использую внутреннюю таблицу для простого просмотра прокручиваемого графика
Ответ №1:
Во-первых, я думаю, что представления вложенных таблиц — плохая идея. Но я не знаю вашего варианта использования, так что это может быть исключением.
Класс контроллера представления таблицы, используемый внутри ячейки, имеет свое собственное @protocol
определение и устанавливает внешний вид таблицы в качестве своего делегата. Во внутреннем didSelectRowAtIndexPath:
он может информировать внешний вид таблицы о выбранной indexPath
, своей собственной indexPath
и любой другой информации, которую вы, возможно, захотите передать.
Комментарии:
1. Это довольно очевидное решение. Иногда я все усложняю и забываю, как сделать просто. Спасибо, что указали на это. Принятый ответ.
2. Прошу прощения за то, что задал здесь вопрос, потому что он не может быть опубликован как новый вопрос. (Сообщество может закрыть это) Почему Tableview внутри tableview — плохая идея? . На самом деле я реализовал то же самое. Мой вариант использования — для списка заказов. В ячейке списка заказов может быть несколько элементов заказа, поэтому я использовал tableview (не прокручиваемый) внутри ячейки для этих элементов заказа. Итак, что было бы лучшим вариантом здесь?.
3. @PrashantTukadiya В вашем варианте использования лучше использовать представление в виде единой плоской таблицы. Либо два вида ячеек для просмотра таблицы, либо работа с разделами и ячейками. Но просмотр прокрутки внутри просмотра прокрутки всегда сбивает с толку.
Ответ №2:
Попробуйте использовать представления коллекции. Вы можете создать макет, который работает как обычное табличное представление, а затем в ячейках, в которых должна быть таблица, вы можете создать эти отдельные ячейки с другим представлением коллекции внутри или табличным представлением внутри нее.
Как упоминалось ранее, нелегко создавать табличные представления внутри ячеек, и может быть очень сложно заставить вещи работать правильно.
Это старое руководство, которое я написал, которое может помочь и послужить руководством. Но с тех пор появились представления коллекции и автоматическая компоновка, так что имейте в виду, что это очень старое.
Комментарии:
1. Привет, Фелипе. Вначале я использовал именно этот (ваш — спасибо) учебник. И затем в какой-то момент я немного изменил код. Да, то, что я делаю, может быть немного сложным, но для меня автоматическое описание иногда еще сложнее и требует много работы, чтобы. Еще раз спасибо
2. Просто не забудьте попробовать это (если сможете) в симуляторе iOS 8 и симуляторах с изменяемым размером. В значительной степени учитывая, что iPhone с большим экраном уже на подходе, и вы хотите, чтобы ваше приложение было готово, особенно после работы над чем-то таким нестандартным, как это.
3. Я уже довольно нервничаю из-за разных размеров экрана. Я был разработчиком Android в течение 4 лет, и я должен сказать вам, что Android так легко контролирует эту ситуацию…