MVC, как правильно получить значения элемента управления в пользовательской ячейке? - PullRequest
0 голосов
/ 23 января 2012

Я определил пользовательскую ячейку с помощью элемента управления UISwitch. Является ли метод GetCell правильным местом и правильным способом получения значений элемента управления ячейки и назначения его более постоянному объекту, чем объекту из представления? (Пример метода GetCell).

if (indexPath.Section == 0)
{
    switch (indexPath.Row)
    {
        case 0:
        TVCellTwoColWBool cell = tableView.DequeueReusableCell(_cIDTwoColWBool) as TVCellTwoColWBool;
        if(cell==null)
            cell = new TVCellTwoColWBool("Date Filtering", MappedList.DateFilter, _cIDTwoColWBool);
        cell.DataView.SWData.ValueChanged += (sender, e) => {MappedList.DateFilter = cell.DataView.SWData.On;};
        return cell;

Ответы [ 2 ]

2 голосов
/ 25 января 2012

Когда вы создаете или повторно инициализируете ячейку, самое время связать состояние любых элементов управления в ячейке с фактическим столбцом / строкой, к которой вы хотите прикрепить поведение.

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

Так что вам нужно будет сначала удалить старый обработчик события, а затем добавить новыйобработчик события.Это означает, что вам нужно использовать вспомогательный метод, чтобы разрешить ValueChanged + = FOO и ValueChanged - = FOO

0 голосов
/ 23 января 2012

Я думаю, что это не метод GetCell, это cellForRowAtIndexPath.И да, это правильное место для получения и вставки значений в ячейку.

...