Изменить стандартное поведение прокрутки заголовка раздела UITableView

Вот более обобщенная версия, использующая декораторы Python. Вы можете позвонить по короткому или длинному имени. Я счел это полезным при реализации CLI с короткими и длинными подкомандами.

Декораторы Python замечательны. Брюс Экель («Мышление на Java») красиво описывает декораторы Python.

http://www.artima.com/weblogs/viewpost.jsp?thread=240808 http : //www.artima.com/weblogs/viewpost.jsp? thread = 240845

#!/usr/bin/env python2

from functools import wraps


class CommandInfo(object):
    cmds = []

    def __init__(self, shortname, longname, func):
        self.shortname = shortname
        self.longname = longname
        self.func = func


class CommandDispatch(object):
    def __init__(self, shortname, longname):
        self.shortname = shortname
        self.longname = longname

    def __call__(self, func):
        print("hello from CommandDispatch's __call__")

        @wraps(func)
        def wrapped_func(wself, *args, **kwargs):
            print('hello from wrapped_func, args:{0}, kwargs: {1}'.format(args, kwargs))
            func(wself, *args, **kwargs)

        ci = CommandInfo
        ci.cmds += [ci(shortname=self.shortname, longname=self.longname, func=func)]
        return wrapped_func

    @staticmethod
    def func(name):
        print('hello from CommandDispatch.func')

        for ci in CommandInfo.cmds:
            if ci.shortname == name or ci.longname == name:
                return ci.func

        raise RuntimeError('unknown command')


@CommandDispatch(shortname='co', longname='commit')
def commit(msg):
    print('commit msg: {}'.format(msg))


commit('sample commit msg')         # Normal call by function name

cd = CommandDispatch
short_f = cd.func(name='co')        # Call by shortname
short_f('short sample commit msg')

long_f = cd.func(name='commit')     # Call by longname
long_f('long sample commit msg')


class A(object):
    @CommandDispatch(shortname='Aa', longname='classAmethoda')
    def a(self, msg):
        print('A.a called, msg: {}'.format(msg))


a = A()
short_fA = cd.func(name='Aa')
short_fA(a, 'short A.a msg')

long_fA = cd.func(name='classAmethoda')
long_fA(a, 'short A.a msg')

144
задан TheNeil 15 May 2019 в 23:31
поделиться

2 ответа

Если бы я делал это, я бы воспользовался тем фактом, что UITableViews в стиле Plain имеют липкие заголовки, а в стиле Grouped - нет. Я бы, наверное, хотя бы попробовал использовать настраиваемую ячейку таблицы, чтобы имитировать внешний вид простых ячеек в сгруппированной таблице.

Я на самом деле не пробовал это, поэтому это может не сработать, но я бы посоветовал это сделать.

36
ответ дан 23 November 2019 в 22:33
поделиться

Я добавляю таблицу в режим прокрутки, и это, кажется, работает хорошо.

0
ответ дан 23 November 2019 в 22:33
поделиться
Другие вопросы по тегам:

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