ячейки iphone tableview с пользовательским textview - получить ссылку textview - PullRequest
1 голос
/ 22 февраля 2010

У меня есть UITableView с 15 ячейками, каждая с отдельным текстовым полем в нем. Я реализовал UITextViewDelegate и могу получать измененные данные textview, используя textViewDidChange (и т. Д.). Но у меня все еще есть одна большая проблема: как я узнаю, КАКОЕ текстовое представление отправило это (т.е. в какой ячейке было изменено текстовое представление?)

Интересно, что так много работает, но точно не знаю, откуда это.

При необходимости доступен целый набор кода.

С уважением @ norskben

Код

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];

        //Big Text Box
        UITextView *detailLabel = [[UITextView alloc] initWithFrame:CGRectMake(30, 80, CONST_Cell_width, 150)];
        detailLabel.tag = 20;
        [cell.contentView addSubview:detailLabel];

    }   


UITextView * detailLabel = (UITextView *) [cell.contentView viewWithTag:20];

Ответы [ 5 ]

2 голосов
/ 22 февраля 2010

Не на моей машине для разработки, но когда вы создаете UITextView, вы должны иметь возможность назначить ему тег. Я думаю, что это [myTextView setTag: x]; где х - целое число.

Затем в TextViewDidChange используйте if (textview.tag == x) { //do something } else if (textview.tag == y) { //do something else and so on }

Надеюсь, это немного поможет.

2 голосов
/ 22 февраля 2010

Вы можете назначить теги (целые числа) различным представлениям и запросить номер тега, чтобы увидеть, какое представление вызвало метод.Найдите свойство тега в представлении:

tag

The receiver’s tag, an integer that you can use to identify view objects in your application.

@property(nonatomic) NSInteger tag

см. Здесь

1 голос
/ 22 февраля 2010

Текстовые представления передают ссылку на себя в каждом методе делегата, чтобы вы знали, какой из них отправил его. Чтобы установить соединение с ячейкой, я бы присвоил свойству tag каждого текстового представления другое значение, соответствующее строке ячейки, в которой они находятся.

0 голосов
/ 23 февраля 2010

При поиске в ячейках UITableView источника события UITextView выполняйте итерации только по тем ячейкам, которые в данный момент видит пользователь. Это можно получить, используя следующий метод UITableView:

- (NSArray *)visibleCells
0 голосов
/ 22 февраля 2010

Вот важный вопрос: ваши текстовые поля статичны или могут со временем меняться? Если они не изменятся (пользователь не может изменить количество ячеек или добавить больше позже), тогда вы можете объявить новый textField для каждой ячейки. У меня есть нечто подобное в моих приложениях. У меня есть два текстовых поля, и в зависимости от того, какой textField в данный момент активен, делегат делает что-то другое.

Объявление отдельных текстовых полей в заголовке

UITextField *textField1;
UITextField *textField2;
UITextField *textField3;

в методе делегата используйте блоки операторов if, чтобы узнать, какой textField изменяется:

if (textField == textField1) {
    //do something
} else if (textField == myTextField2) {
    //something else
}

Обратите внимание, что это действительно работает, только если ваше представление статично.

Надеюсь, это поможет

Хорошего дня

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...