UITableView seçimini necə söndürmək olar?

UITableView bir simli UITableView , simli vurğulanır və seçilir. Bunu aradan buraxmaq mümkündürmı, buna görə bir xəttə basmaq heç bir şey deyil?

1001
10 окт. 10 oktyabrda DavidM tərəfindən təyin olundu . 2008-10-10 14:32 '08 saat 14:32 'de 2008-10-10 14:32
@ 34 cavab
  • 1
  • 2

Mənim üçün aşağıdakı işlər edildi:

tableView.allowsSelection = NO;

Demək didSelectRowAt# sadəcə işləməyəcək. Yəni masa sırasına toxunaraq, heç bir şey etməyəcək. (Və buna görə seçilmiş animasiya heç vaxt olmayacaqdır).

(Qeyd: hüceyrələrdə UIButton və ya hər hansı digər nəzarət varsa, əlbəttə ki, bu nəzarətlər hələ də işləməyəcəkdir. Masa hüdudlarında olan hər hansı bir nəzarət tamamilə UITableView xüsusiyyətinə aid deyil, didSelectRowAt# ilə satır seçin.)

458
22 июля '09 в 19:56 2009-07-22 19:56 Cavab Paulo De Barros tərəfindən 22 İyul 2009 tarixində 19:56 'da 2009-07-22 19:56' də verilir

UITableViewCell hər UITableViewCell nümunəsinə seçim stilini təyin etməkdir:

Məqsəd-C:

 cell.selectionStyle = UITableViewCellSelectionStyleNone; 

və ya

 [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 

Swift 2:

border=0
 cell.selectionStyle = UITableViewCellSelectionStyle.None 

Swift 3:

 cell.selectionStyle = .none 

Ayrıca, ya da tətbiq -tableView:didSelectRowAtIndexPath: sizin nümayəndənizdə masa görünüşünə və ya tətbiq etdiyiniz hər hansı bir hərəkət etməməyi seçdiyiniz hüceyrələri açıqca -tableView:didSelectRowAtIndexPath: .

Buradanburadan daha çox oxuyun

1719
10 окт. Martin Gordonun Oct 10 tərəfindən verdiyi cavab 2008-10-10 16:22 '08 at 4:22 2008-10-10 16:22

Bu yaxınlarda oxuduğumdan və mənə kömək etdiyindən, bütün cavabları (övladlığa görə) birləşdirmək üçün bir daha cavabı yaymaq istərdim.



Beləliklə, əslində istənilən məntiqə və / və ya nəticəyə görə 5 fərqli cavab var:

1. Başqa bir hüceyrə qarşılıqlı dəyişdirmədən mavi işıqları söndürmək üçün:

 [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 

Bir UIButton və ya bir UITableViewCell-də olan digər nəzarət (lər) olduğumda istifadə edirəm və istifadəçinin nəzarət ilə qarşılıqlı olmasını istəyirəm, amma hüceyrənin özü ilə deyil.

Qeyd . Tony Million qeyd etdiyimiz kimi, bu tableView:didSelectRowAtIndexPath: qarşısını tableView:didSelectRowAtIndexPath: Mən bununla sadə "if" ifadələri ilə gedəcəyəm, tez-tez bölmənin yoxlanılması və müəyyən bir bölmə üçün tədbirlərdən qaçınılmasıdır

Bir hüceyrə dinləmək üçün yoxlamağa qərar verdiyim başqa bir şey belədir:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // A case was selected, so push into the CaseDetailViewController UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; if (cell.selectionStyle != UITableViewCellSelectionStyleNone) { // Handle tap code here } } 



Bütün masa üçün bunu etmək üçün yuxarıdakı həlli masanındakı hər bir hüceyrəyə tətbiq edə bilərsiniz, lakin bunu da edə bilərsiniz:

 [tableView setAllowsSelection:NO]; 

Mənim UITableViewCell , bu hələ UITableViewCell daxilində interaktiv nəzarət etməyə imkan verir.


3. Yalnız oxumaq hüceyrəsi etmək üçün bunu sadəcə edə bilərsiniz:

 [cell setUserInteractionEnabled:NO]; 



4. Bütün masanın yalnız oxumaq üçün

 [tableView setUserInteractionEnabled:NO]; 



5. Hüceyrə seçimi olub-olmadığını müəyyən etmək üçün (bu UITableViewDelegate görə seçimi nəzərdə tutur), UITableViewDelegate protokolunun aşağıdakı metodunu həyata keçirə bilərsiniz:

 - (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath 
325
10 июня '11 в 14:08 2011-06-10 14:08 Cavab mbm29414 tərəfindən verilir 10 İyun '11 da 14:08 2011-06-10 14:08

Hesab edirəm ki, mənim düşündüyümü yekunlaşdıraraq, bunu həyata keçirməkdə öz təcrübəmə əsaslanaraq:

Seçimi yalnız bəzi hüceyrələr üçün ayırmaq istəyirsinizsə, istifadə edin:

 cell.userInteractionEnabled = NO; 

Seçimi qarşısını almaqla yanaşı, bu da tableView: didSelectRowAtIndexPath: bu yüklü hüceyrələr üçün çağırıb dayanır. (Kredit bu cavab üçün Tony Million'a göndərilir, təşəkkür edirəm!)

Klikləməyiniz lazım olan hüceyrələrdə düymələriniz varsa, lazım:

 [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 

və həmçinin - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath hər hansı bir tıklamayı - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath .

Bütün masanın seçimi aradan qaldırmaq istəyirsinizsə, istifadə edin:

 tableView.allowsSelection = NO; 

(Paulo de Barros'a təşəkkür, təşəkkür edirəm!)

66
01 июня '11 в 16:32 2011-06-01 16:32 cavabı Yusif 01 iyun 'da 16:32' də verildi. 2011-06-01 16:32

İOS 6.0 ilə başlayaraq, UITableViewDelegate bir tableView:shouldHighlightRowAtIndexPath: (Bu barədə iOS Sənədində oxuyun.)

Bu metod, userInteractionEnabled = NO və ya burada göstərilən digər metodlardan istifadə edərək, hüceyrə hadisəsi işlədilməklə hüceyrə seçim stilini dəyişdirmədən, müəyyən simləri qeyri-məlumatlı (və örtük, seçilə bilməz) kimi qeyd etməyə imkan verir.

45
01 нояб. cavab cbowns 01 noyabr verilir . 2012-11-01 00:48 '12 at 0:48 2012-11-01 00:48

NoSelection kimi, selection parametrindən (UITableView xüsusiyyətlərindən) NoSelection -ni seçərək, arabirim qurucusu özündən satır seçimini də söndürə bilərsiniz.

2019

39
25 апр. cavab vignesh kumar tərəfindən verilir 25 Apr 2013-04-25 16:13 '13 at 16:13 2013-04-25 16:13

Əgər kimsə Swift cavab verməlidirsə:

 cell.selectionStyle = .None 
31
02 дек. Cavab verilir. 02 dekabr. 2014-12-02 12:39 '14 at 12:39 2014-12-02 12:39

SWIFT üçün FIXED SOLÜS 3

 cell.selectionStyle = .none 
28
07 янв. Cavab Maniş PATHAK Jan 07 tərəfindən verilir 2017-01-07 22:15 '17 saat 10:15 'da 2017-01-07 22:15

Yalnız flash seçimini seçilmiş vəziyyətdə qalmamasını istəyirsinizsə, zəng edə bilərsiniz

 didSelectRowAtIndexPath 

Aşağıdakılar

 [tableView deselectRowAtIndexPath:indexPath animated:YES]; 

belə ki, seçilmiş dövlət və vurğulayır vurğulayır.

27
13 нояб. Chris Fox tərəfindən verilmiş cavab Nov 13 2012-11-13 18:07 '12 at 18:07 2012-11-13 18:07

UITableViewDelegate , UITableViewDelegate , willSelectRowAtIndexPathreturn nil üsullarını istifadə edə bilərsiniz.

willDeselectRowAtIndexPath ləğv edilməsini istəmirsinizsə eyni şəkildə, willDeselectRowAtIndexPathreturn nil üsullarını istifadə edə bilərsiniz.

23
30 июня '09 в 13:01 2009-06-30 13:01 cavab 30 iyun 2009 -cu il tarixində saat 13 : 00 -da verilmişdir

Mən bu istifadə edirəm:

 cell.selectionStyle = UITableViewCellSelectionStyleNone; 

cellForRowAtIndexPath ildə bu kodu yazın.

20
30 марта '15 в 13:31 2015-03-30 13:31 Əhsan İbrahimin 30 Mart 15: 13-də verdiyi cavabı, 2015-03-30 13:31

UITableViewCell XIB -də, Attribute Inspector ayarlarında, Selection dəyərini Yoxlamağa təyin edin.

2019

05 окт. Cavab Zaid Pathan 05 oct verilir. 2016-10-05 10:49 '16 at 10:49 2016-10-05 10:49

Yazmağa cəhd edin:

 cell.selected = NO; 

Zəruri hallarda xəttini seçimdən kənarlaşdırın.

Swift3-də ...

 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let r = indexPath.row print("clicked .. \(r)") tableView.cellForRow(at: indexPath)?.setSelected(false, animated: true) } 
12
27 мая '11 в 18:37 2011-05-27 18:37 Cavab verilib wzbozon 27 May '11 18:37 'da 2011-05-27 18:37

Ayrıca userInteractionEnabled mülkiyyətinin istifadəsini qadağan edən UITableViewCell üzərində nəzarəti olan çox mübarizə userInteractionEnabled . Ayarlarım üçün 3 hüceyrə ilə statik bir masa, 2 tarixi ilə, 1 açma / qapaqlı bir keçid var. Storyboard / IB oynadıktan sonra alt hissəni seçilemez hala gətirdim, ancaq bastığınızda, üst satırlardan birinin seçimi kaybolur. UITableView ayarlarımın WIP görüntüsü:

2019

11
04 янв. cavab Yarek T 04 jan verilir. 2013-01-04 00:08 '13 at 0:08 2013-01-04 00:08

Yalnız bu kodu cellForRowAtIndexPath-da qoymalısınız

Hüceyrə seçiminin xüsusiyyətini aradan qaldırmaq üçün: (bir hüceyrəni tıkladığınızda).

 cell.selectionStyle = UITableViewCellSelectionStyle.None 
10
18 мая '16 в 8:17 2016-05-18 08:17 Cavab Gaurav Patel tərəfindən 18 May '16 'da 8:17 2016-05-18 08:17' də verildi

Məqsəd C:

  • Parçalanma altında, seçimi aradan buraxın, həm də didSelectRowAtIndexPath çağırışını aradan buraxın. Buna görə, didSelectRowAtIndexPath istifadə etməsəniz, aşağıdakı üsuldan istifadə edin. Bir masa yaratdığınızda bunu əlavə etmək lazımdır. Bu, yalnız hüceyrənin içində düymələr və TextField üzərində işləyəcək.

     self.tableView.allowsSelection = NO; 
  • Aşağıda seçimi dayandırmaq üçün parçalanma və bu didSelectRowAtIndexPath çağırışını işlətməyib. Mobil seçim stilini CellForRowAtIndexPath-da None -ə təyin edin

     cell.selectionStyle = UITableViewCellSelectionStyleNone; 
  • Fragmanın altında, hüceyrədə olan hər şeyi aradan buraxın. Bu düymələr, mətn sahələri ilə qarşılıqlı əlaqəni kəsəcək:

     self.tableView.userInteractionEnabled = false; 

Swift

Aşağıda, Objective-C həllərindən yuxarı olan Swift-ə bərabərdir:

  • İlk həllinin dəyişdirilməsi

     self.tableView.allowsSelection = false 
  • İkinci həllin dəyişdirilməsi

     cell?.selectionStyle = UITableViewCellSelectionStyle.None 
  • Üçüncü həllin dəyişdirilməsi

     self.tableView.userInteractionEnabled = false 
10
22 нояб. Cavab 22 noyabr tarixində Arun Gupta tərəfindən verilir. 2014-11-22 12:43 '14 at 12:43 2014-11-22 12:43

tez ləğv etmək üçün

 cell.selectionStyle = .None 
10
30 марта '15 в 9:10 2015-03-30 09:10 Cavab 30 mart 2015-ci il saat 09:10 'da verilir

Tür kodu yaza bilərik

  cell.selectionStyle = UITableViewCellSelectionStyleNone; 

lakin xətti yuxarıda olan istifadəçi hüceyrəsi xib zaman üçün xəbərdarlıq verir

istifadəçi hüceyrəsi xib

interfeys konstruktorundan None seçim stilini təyin etməmiz lazımdır

9
24 марта '12 в 16:21 2012-03-24 16:21 Cavab iDhaval 24 mart '12 saat 16:21 'da verilir 2012-03-24 16:21

Mənim üçün işləyən məndən istifadə edirəm.

 cell?.selectionStyle = UITableViewCellSelectionStyle.None 
8
19 окт. Cavab verildi priyanka gautam Oktyabr 19. 2015-10-19 15:33 '15 at 15:33 2015-10-19 15:33

cəhd edin

 cell.selectionStyle = UITableViewCellSelectionStyleNone; 

 [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 

interfacebuilder istifadə edərək seçim stilini də qura bilərsiniz.

8
09 июля '12 в 10:27 2012-07-09 10:27 Cavab verilir v_1 İyun 09 '12 10:27 2012-07-09 10:27

Seçim zamanı bir simli görünməməsinin qarşısını almaq üçün bu ən yaxşı və asan bir həll olmasına baxmayaraq

 cell.selectionStyle = UITableViewCellSelectionStyleNone; 

Bundan əlavə, simli seçildikdən sonra aradan qaldırıldığını göstərmək üçün bəzən faydalıdır. Bu istifadəçiləri seçməyi planlaşdırdıqlarını təsdiqləmələri üçün xəbərdar edir:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:NO]; ... } 
6
21 авг. 21 Avqustda Steve Barden tərəfindən cavablandırıldı 2013-08-21 00:25 '13 'da 0:25 2013-08-21 00:25

Siz həmçinin UITableViewCellSelectionStyleNone kimi eyni təsiri əldə etmək üçün Clear fonunda fon rəngini təyin edə bilərsiniz / UITableViewCellSelectionStyleNone istifadə edə bilməzsinizsə.

Aşağıdakı kodu istifadə edirsiniz:

 UIView *backgroundColorView = [[UIView alloc] init]; backgroundColorView.backgroundColor = [UIColor clearColor]; backgroundColorView.layer.masksToBounds = YES; [cell setSelectedBackgroundView: backgroundColorView]; 

Hücreə əlavə bir rəng görünüşü əlavə edərkən bu performansınızı azalda bilər.

5
14 янв. Jan 14 verildi 2014-01-14 04:43 '14 at 04:43 2014-01-14 04:43

UITableViewCell üçün selectStyle xüsusiyyətindən istifadə edə bilərsiniz

  cell.selectionStyle = UITableViewCellSelectionStyleNone; 

Və ya

  [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 

Həmçinin, aşağıdakı nümayəndəni izləməyin.

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { ... } 

Xib / Storyboard faylını yaratdıysanız, tableview'un setUserInteractionEnabled xüsusiyyətini qutusundan silməklə xeyrinə dəyişə bilərsiniz. Bu, masa görünüşünüzü yalnız oxuya edəcək.

4
15 мая '15 в 11:55 2015-05-15 11:55 Cavab Jayprakash Dubey tərəfindən mayın 15-də saat 15: 15-də verilir. 2015-05-15 11:55

Bunu da hekayələrdən edə bilərsiniz. Cədvəl görünüşü hücresindəki Cədvəl görünüşü hücresini və Attributes Inspector-dəki masaüstü nişanını basın, Aşağıdakı açılır siyahıdan None to None-ə seçin.

4
04 дек. Cavab Cindy 04 dekabr verilir. 2014-12-04 08:12 '14 saat 08:12 AM 2014-12-04 08:12
 UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; [cell setSelected:NO animated:NO]; [cell setHighlighted:NO animated:NO]; 

Xoşbəxt kodlaşdırma!

4
31 июля '14 в 15:53 2014-07-31 15:53 cavab Rinku Sadhwani tərəfindən 31 iyul 'da 15:53' də veriləcək 2014-07-31 15:53

Bunu istifadə edə bilərsiniz

 cell.selectionStyle = UITableViewCellSelectionStyleNone; 
4
10 мая '13 в 12:44 2013-05-10 12:44 cavab 10 may 2013- cü il saat 12:44 'də İEnstein tərəfindən verilmişdir 2013-05-10 12:44

UItableviewcell seçimini ləğv etmək üçün

 cell.selectionStyle = UITableViewCellSelectionStyleNone; 

Və istifadəçinin hüceyrə ilə qarşılıqlı əlaqəsinə icazə verməməlidir.

 cell.userInteractionEnabled = NO; 
4
18 янв. Cavab 18 yanvar Şarman tərəfindən verilir 2013-01-18 03:51 '13 da 3:51 2013-01-18 03:51

Siz istifadə edə bilərsiniz ....

 [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 
4
08 окт. Mohan Chaudhari tərəfindən verilmiş cavab oktyabr 08 2013-10-08 14:10 '13 at 2:10 pm 2013-10-08 14:10

Xüsusi mobil ilə tez düzeltme:

 import Foundation class CustomTableViewCell: UITableViewCell { required init(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } override init(style: UITableViewCellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) self.selectionStyle = UITableViewCellSelectionStyle.None } } 
4
19 февр. Cavab Zorayr Fevral 19 verilir 2015-02-19 11:54 '15 at 11:54 2015-02-19 11:54

Ən yaxşı həll yolu seçim stilini yaratmaqdır

 [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 

Lakin burada seçilmiş dövlət üçün heç bir istifadəçi şəkli olmadığını düşünürük.

3
25 авг. cavab günəşli 25 aug verilir . 2013-08-25 16:24 '13 'da 16:24' da 2013-08-25 16:24
  • 1
  • 2