Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Правильная обработка нажатя кнопки в TableView - Программирование iOS

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование iOS Где gamescene.m ? http://www.cyberforum.ru/ios-dev/thread1373796.html
Здравствуйте! Я хочу написать(в качестве обучения) игру по этой статье=> http://habrahabr.ru/post/225517/ . В ней говорится что слева в навигаторе файлов должен быть файл gamescene.m , а у меня...
Программирование iOS Сохранение фигуры, нарисованной тачем Доброго времени суток. Случалось ли кому-нибудь работать с "рисованием" на экране? Мне нужно, чтобы пользователь пальцем нарисовал любую фигуру - от линии до какой-то загогулины, сохранить это и... http://www.cyberforum.ru/ios-dev/thread1372884.html
Приложение не устанавливается на ios 8.1.3 Программирование iOS
Написал приложение в xcode 6, всем доволен, протестировал на 4s, все работает, пришёл друг с 5s, и на него приложение не ставится, у него стоит прошивка 8.1.3, а в моём xcode максимальная прошивка...
Что за ошибка CoreData Программирование iOS
Доброго времени суток. Я только начал программировать. Столкнулся с проблемой. При создании любой базы в CoreData выдает вот такую ошибку: CoreData: error: -addPersistentStoreWithType:SQLite...
Программирование iOS Не получается сделать unwind seque && подключить производный класс (XCode 6) http://www.cyberforum.ru/ios-dev/thread1368293.html
Доброго времени суток! Недавно начал изучать программирование на Objective C и разработку под iOS. Занимаюсь по статьям на developer.apple.com и иногда посматриваю видеоуроки (только по разработке...
Программирование iOS Не раскрывается (исчез) TableView на ScrollView Здравствуйте. Есть TableView, на обычной вьюхе всё работает нормально. Высота ячеек рассчитывается и т.д. Но вот когда я сделал вью контроллер freeform и задал необходимую высоту и ниже трех лейблов... подробнее

Показать сообщение отдельно
VV0lk
11 / 1 / 0
Регистрация: 25.12.2011
Сообщений: 171
16.02.2015, 16:18  [ТС]
Метод dequeueReusableCell (начиная с какого-то обновления iOS) сам создает ячейку при необходимости (хотя кажется это работает только если табличка в сториборде, для нибов все по старому).
Я как раз со сторибордом и работаю.
Можно удалить все предыдущие обработчики перед добавлением нового.
Можно, но не известно сколько их было добавлено до этого, чтобы знать сколько удалять.
Можно передавать в кастомную ячейку блок, который будет вызываться при нажатии кнопки (или что там в C# вместо блоков? Лямбды?).
Не до конца понял что вы имеете в виду.
В общем сегодня сделал так, как задумывал на выходные. И все заработало. Переопределил класс кнопки кастомной ячейки дочерним классом от UIButton, добавив в него строковое свойство Tag_String.
И в GetCell написал такой вот код:
C#
1
2
3
4
5
6
cell.cell_button.Tag = indexPath.Row;
if(cell.cell_button.Tag_String==null)
        cell.cell_button.TouchUpInside += Touch_Delbtn_on_cell;
cell.cell_button.Tag_String=TextLabelList[indexPath.Row];
cell.cell_button.SetBackgroundImage(image, UIControlState.Normal);
cell.cell_Label.Text = TextLabelList [indexPath.Row];
А в обработчике нажатия вот такой:
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    void Touch_Delbtn_on_cell(object sender, EventArgs e)
        {
            var button = (UIMyButton_on_cell)sender;
 
            if (button.Tag == 0) {
                Add_new_element (_tableView);
                return;
            }
            if (button.Tag == 1) {
                Del_all_element (_tableView);
                return;
            }
 
            var findindex = _User_Data.name_mash_picker_list.FindIndex(x => x.Equals(button.Tag_String)); //найти элемент в списке с такой строкой.
            
        
            if(findindex>1)
                _User_Data.name_mash_picker_list.RemoveAt (findindex);//удалить этот элемент
                
            _tableView.ReloadData ();
            System.IO.File.Delete (dbPath); //удалить  файл-список
            BinaryWriter bw = new BinaryWriter(new FileStream(dbPath, FileMode.OpenOrCreate));
            for(int i=_User_Data.name_mash_picker_list_start_Count; i<_User_Data.name_mash_picker_list.Count; i++)  //переписать текущий список в файл
                bw.Write(Convert.ToDouble(_User_Data.name_mash_picker_list[i]));
            bw.Close(); 
 
        }

Теперь в обработчик заходит только один раз и делает все что мне надо. Всем спасибо!
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru