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

Вы можете получить ссылку на родителя TreeViewItem элемента, по которому щелкнули (e.OriginalSource), используя класс VisualTreeHelper:

private void TreeViewItem_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    var hijo = FindParent<TreeViewItem>(e.OriginalSource as DependencyObject);
    //...

}

private static T FindParent<T>(DependencyObject dependencyObject) where T : DependencyObject
{
    var parent = VisualTreeHelper.GetParent(dependencyObject);

    if (parent == null) return null;

    var parentT = parent as T;
    return parentT ?? FindParent<T>(parent);
}
5
задан Loktar 2 April 2009 в 22:13
поделиться

3 ответа

Можно использовать представления в качестве контейнеров для содержания элементов как таблицы. Таким образом в случае Вы обрисовываете в общих чертах, Вы имели бы одно контейнерное представление и загрузили бы UITableViews и из него...

Хороший подход должен был бы иметь отдельные контроллеры представления для каждой таблицы. Иначе это просто получает слишком грязную попытку отслеживать, которого набора данных Вы поддерживаете через различные методы делегата табличного представления, и мешает делать большую настройку к одной таблице, которая не может относиться к другому.

Главным знать при использовании составленных контроллеров представления является "self.navigationController", и связанные вызовы ничего не возвратят (так как они не действительно дети контроллера навигации), таким образом, необходимо будет провести ту ссылку или иначе обработать это несколько по-другому в контроллерах табличного представления.

5
ответ дан 14 December 2019 в 04:48
поделиться

Если бы было только небольшая разница между двумя — например, если ячейки таблицы размечаются тот же путь, но используют немного отличающиеся данные — я мог бы использовать, если операторы, но иначе я пойду с отдельными какими-то объектами делегата. Разделение проблем является ключом здесь: если Вы пишете один метод, который делает две весьма разных вещи, это - знак, что Ваш код не организован достаточно хорошо, чтобы быть читаемым, удобным в сопровождении, или гибким.

Кроме того, не забывайте, что контроллеры представления не должны быть волшебными объектами, которые можно только использовать с утвержденной Apple панелью вкладок и контроллерами навигации. Совершенно законно записать Ваш собственный "контроллер представления переключения", который берет два контроллера представления и переключатели между ними. Необходимо будет сделать некоторое тестирование, тем не менее, чтобы определить, необходимо ли назвать-viewWillAppear: и его род вручную или не — существует некоторое волшебное оборудование, которое может или не может сделать этого для Вас, в зависимости от того, где Вы добавляете свой контроллер представления в иерархии.

2
ответ дан 14 December 2019 в 04:48
поделиться

Это - то, как я обработал бы ситуацию сам. Один контроллер и делегат на UITableView. Источник данных может быть снова использован, если бы это имеет смысл (т.е. те же данные отображены в обоих UITableViews), Иначе, у Вас было бы много IFS в, Вы - методы делегата, проверяя, какие tableview отправляют сообщение.

Переключение UITableViews походит на задание для UINavigationController мне. Обычно на iPhone, Вы только перестраиваете свои средства управления. Вы создаете полные экраны (в коде или как .nib через InterfaceBuilder), переключая между ними использование UINavigationController или UITabBar.

1
ответ дан 14 December 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: