IPhone UiableView подавляет кнопку раскрытия, когда кнопка «Удаление» отображается -- iphone поле с участием cocoa-touch поле с участием uitableview пол Связанный проблема

IPhone UITableView suppress disclosure-button when Delete Button is displayed


2
vote

проблема

русский

У меня есть <код> UITableView , который имеет кнопку раскрытия на каждой строке. Когда таблица введена в режим редактирования, и управление удалением нажата («-« знак), кнопка «Удаление» показывает, однако кнопка раскрытия не заменяется, но вместо этого просто скользит слева от кнопки «Удалить».

Apple UITableView Руководство, объясняет делегаты для всего, что похоже, кроме делегата, называемого, когда нажата знак «-», но перед отображением кнопки «Удаление».

Я просто хотел бы подавить индикатор раскрытия, пока отображается кнопка Удаления.

Я предполагаю, что я что-то упускаю ... Я установил <код> setHidesAccessoryWhenEditing:NO На клетки таблицы отображается индикатор, чтобы указать пользователю, что если они выберут строку, они могут редактировать его ...

Поведение, которое я пытаюсь скопировать, выполняется в приложении контактов, когда контакт отредактирован. Любая помощь была бы очень оценена ...

Спасибо, Грег

Английский оригинал

I have a UITableView that has a disclosure button on every row. When the table is put into edit mode and the the Deletion control is pressed ("-" sign), the Delete Button shows, however the disclosure button is not replaced, but instead just slides to the left of the delete button.

The apple UITableView guide explains the delegates for everything it seems except for the delegate that is called when the "-" sign is pressed, but before the delete button is displayed.

I would just like to suppress the disclosure indicator while the delete button is shown.

I'm guessing that I am missing something... I have set the setHidesAccessoryWhenEditing:NO on the cells of the table so that the indicator is displayed to indicate to the user that if they select the row, they can edit it...

The behavior I am trying to copy is done in the contacts app when a contact is edited. Any help would be greatly appreciated...

Thanks, Greg

</div
        

Список ответов

4
 
vote
vote
Лучший ответ
 

Стандартный способ сделать это - использовать <код> cell.hidesAccessoryWhenEditing = YES , и что редактирование представляет собой модальное действие, в котором навигация обычно отключается.

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

Если вы хотите узнать, когда появится кнопка «Удаление», я бы посоветовал, что вы попробуйте установить наблюдательный наслед за ключом на showingDeleteConfirmation , например:

 <код> [cell addObserver: self forKeyPath: @"showingDeleteConfirmation"           options: NSKeyValueObservingOptionNew context: NULL];   

Затем вы реализуете метод обратного вызова наблюдателя:

 <код> - (void)observeValueForKeyPath: (NSString *) keyPath ofObject: (id) object                         change: (NSDictionary *) change context: (void *) context {     if ( [keyPath isEqualToString: @"showingDeleteConfirmation"] )     {         UITableViewCell * cell = (UITableViewCell *) object;         BOOL isShowing = [[change objectForKey: NSKeyValueChangeNewKey] boolValue];         if ( isShowing == NO )             cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;         else             cell.accessoryType = UITableViewCellAccessoryNone;     } }   

Я должен отметить, что я не уверен, является ли класс UiableViewCell KVO-совместимым для этого свойства, но это должно быть стоит попробовать ...

 

The standard way to do this is to use cell.hidesAccessoryWhenEditing = YES, and that editing is a modal action in which navigation is typically disabled.

The Contacts application actually uses custom table cells, and I wouldn't be surprised if it didn't so much use an accessory as have an image located on the cell's right edge, judging by its behaviour.

If you want to know when the delete button appears, I'd suggest that you try installing a Key-Value observer on the cell's showingDeleteConfirmation property, like so:

[cell addObserver: self forKeyPath: @"showingDeleteConfirmation"           options: NSKeyValueObservingOptionNew context: NULL]; 

Then you implement the observer callback method:

- (void)observeValueForKeyPath: (NSString *) keyPath ofObject: (id) object                         change: (NSDictionary *) change context: (void *) context {     if ( [keyPath isEqualToString: @"showingDeleteConfirmation"] )     {         UITableViewCell * cell = (UITableViewCell *) object;         BOOL isShowing = [[change objectForKey: NSKeyValueChangeNewKey] boolValue];         if ( isShowing == NO )             cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;         else             cell.accessoryType = UITableViewCellAccessoryNone;     } } 

I should note that I'm not sure whether the UITableViewCell class is KVO-compliant for this property, but it's got to be worth a try…

</div
 
 
       
       
2
 
vote

Или, когда вы создаете свою клетку, вы можете определить тип аксессуаров: Cell.editingAcceSsoryType = UiableViewCellaccessorynone;

 

Or when you are creating your cell you can define the accessory type: cell.editingAccessoryType = UITableViewCellAccessoryNone;

</div
 
 
1
 
vote

Индикатор раскрытия информации управляется <код> tableView:accessoryTypeForRowWithIndexPath: , так что, возможно, вы можете изменить тип аксессуаров, когда в режиме редактирования.

Я верю, что есть <код> tableView:accessoryButtonTappedForRowWithIndexPath: , может быть, там вы можете отметить, что вы собираетесь редактировать режим, а затем изменить, что <код> tableView:accessoryTypeForRowWithIndexPath: возвращает для каждой строки - без аксессуаров, когда в режиме редактирования.

Я бы попробовал.

Вот вызывающая последовательность (не уверена, если это поможет) описание / учебное пособие / примеры от ссылки Apple о том, как пойти на вставка и удаление строк в режиме редактирования .

 

The disclosure indicator is managed by tableView:accessoryTypeForRowWithIndexPath: so maybe you could change the accessory type while in editing mode.

I believe there's a tableView:accessoryButtonTappedForRowWithIndexPath:, maybe there you can note that you're going to edit mode and then change what the tableView:accessoryTypeForRowWithIndexPath: returns for each row - no accessory when in edit mode.

I would give it a try.

Here is a calling sequence (not sure if that helps) description/tutorial/examples from Apple reference about how to go about Inserting and Deleting Rows in Editing Mode.

</div
 
 
1
 
vote

Мой комментарий к решению Джима не стал очень хорошо ... вот версия, которая решила для меня проблемы ... Спасибо, Джим!

.    - (void) Обслуживание: (nsstring *) keypath ofobject: (ID) объект                         Изменить: (NSDictictionary *) Изменить контекст: (void *) Контекст   {     UiableViewCell * Cell = объект;     если ([keyphath isqualtostring: @ "indestdeleteleconfirmation"])     {         Обшивка Bool = [[ИЗМЕНЕНИЕ OLDERFOKEKEY: NSKEYVALUECHANGENEWKEY] BOLVALUE];         если (! распуская)         {             Cell.acceSsorytype = UiableViewCellaccessoryDisCloseИдикатор;         }         еще         {              Cell.accessorytype = UiableViewcellaccessorynone;         }     } }  
 

My comment to Jim's solution didn't come across very well... Here is the version that solved the problem for me... Thanks again Jim!

    - (void)observeValueForKeyPath: (NSString *) keyPath ofObject: (id) object                         change: (NSDictionary *) change context: (void *) context   {     UITableViewCell * cell = object;     if ( [keyPath isEqualToString: @"showingDeleteConfirmation"] )     {         BOOL isShowing = [[change objectForKey: NSKeyValueChangeNewKey] boolValue];         if ( !isShowing )         {             cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;         }         else         {              cell.accessoryType = UITableViewCellAccessoryNone;         }     } }  
</div
 
 

Связанный проблема

57  Как динамически разместить высоту UiableViewCell  ( How to dynamically resize uitableviewcell height ) 
У меня есть классический сгруппированный UiableView с редактируемым UIrextViews внутри каждой ячейки. Этот текстовые представления могут быть одиночными или м...

0  Призматическое соединение вызывает сбой коробки2D (Cocos2D)  ( Prismatic joint causes a crash box2dcocos2d ) 
Я пытался настроить призматический сустав, но я получаю эту ошибку при выполнении времени: Ошибка утверждения: (заблокировано () == false), функциональная нас...

8  UIVIEW AUTOSESINGSMASK Проблема  ( Uiview autoresizingmask problem ) 
в iPad. У меня есть UiviewController с другим UIView внутри него, внизу. <код> ____________ | | | | | UIView | | Controller | | ...

3  Как создать универсальные приложения на iPhone / iPad?  ( How to create universal apps in iphone ipad ) 
Я хочу создать универсальные приложения. Я уже сделал несколько приложений для iPhone. Теперь я хочу начать универсальные приложения, что означает, что прилож...

5  Использование синхронизованного массива Singleton с NSTHAED  ( Using singleton synchronized array with nsthread ) 
У меня есть приложение книг с UISearchBar, где пользователь набирает любую имя книги и получает результаты поиска (из вызова EXT API) ниже, как он типы. Я и...

-1  Как я могу просмотреть накопительную кулачок в моем собственном приложении для iPhone и Android?  ( How can i view a drop cam feed in my own app for iphone and android ) 
У меня есть клиент, который хочет показать его подачу капюма в своем собственном приложении, а не приложение, которое предоставляет CAM. Однако после вызова D...

0  Не можете получить панель поиска для отображения в приложении iPhone  ( Cant get search bar to display in iphone application ) 
Я пытаюсь получить панель поиска для отображения в моем приложении. Я следую в примере Show в приложении TableSearch Sample. Я более или менее реализован ...

1  Как я могу получить токен доступа через API FBConnect?  ( How can i get access token through fbconnect api ) 
Я хочу знать, смогу ли я получить токен доступа через API FBConnect, используя SDK iPhone. Я могу получить один через fbgraph, но я хочу использовать fbconn...

2  Удаление разделов UiableView сочетается с пользовательскими заголовками раздела Uiviews = ошибка в коде Apple?  ( Deleting uitableview sections combined with custom section headers uiviews bug ) 
Я пытаюсь удалить раздел из UiableView с использованием анимации и пользовательской таблицы заголовка раздела UIViews. Я использую ... <код> //Deletion fr...

1  Не удается изменить размер кадра UiscrollView  ( Cannot resize uiscrollviews frame ) 
У меня есть UiscrollView с его рамой и содержимым с таким же размером. Я хочу изменить высоту кадра ScrollView, когда появится клавиатура, но она не работает....

13  Пользовательский вид Uipagecontrol, замена точек с "страницами x y y" y "  ( Custom uipagecontrol view replacing dots with page x of y ) 
Я пытаюсь найти способ заменить точки UipageControl с подписи, который читает «страницу x y y», поскольку я, скорее всего, имею и GT; 50 предметов. Я просто з...

4  Создайте каталог на iPhone  ( Create a directory on an iphone ) 
Я хочу знать, как создать каталог на указанном пути. Я использовал "систему (" путь каталога ");" Это работает нормально в симуляторе, но не на устройстве ...

0  вебсервис В Iphone SDK?  ( Webservice in iphone sdk ) 
<Р> я скачал WSDLObjC-0,6 от Google, чтобы включить SOAP веб-сервис в IPhone SDK.But это является, как App файл, как я могу интегрировать этот файл в iPhone SD...

1  Есть ли сообщество iPhone с открытым исходным кодом? [закрыто]  ( Is there any iphone open source community ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> <Путь d = "M15 6.38A6.48 6.48 0 007.78. 04H-.02A6.49 6.49 0 002.05 ...

2  Делегат для объекта проходит к делегату  ( Delegate for object passes itself to delegate ) 
У меня есть подкласс UiimageView и хотел бы пройти как параметр к делегату. Я получаю ошибку «ожидаемую») «Перед MyImageView». Мне нужно пройти объект к делег...

Связанный проблема

57  Как динамически разместить высоту UiableViewCell 
0  Призматическое соединение вызывает сбой коробки2D (Cocos2D) 
8  UIVIEW AUTOSESINGSMASK Проблема 
3  Как создать универсальные приложения на iPhone / iPad? 
5  Использование синхронизованного массива Singleton с NSTHAED 
-1  Как я могу просмотреть накопительную кулачок в моем собственном приложении для iPhone и Android? 
0  Не можете получить панель поиска для отображения в приложении iPhone 
1  Как я могу получить токен доступа через API FBConnect? 
2  Удаление разделов UiableView сочетается с пользовательскими заголовками раздела Uiviews = ошибка в коде Apple? 
1  Не удается изменить размер кадра UiscrollView 
13  Пользовательский вид Uipagecontrol, замена точек с "страницами x y y" y " 
4  Создайте каталог на iPhone 
0  вебсервис В Iphone SDK? 
1  Есть ли сообщество iPhone с открытым исходным кодом? [закрыто] 
2  Делегат для объекта проходит к делегату