UITableView තේරීම අක්‍රිය කරන්නේ කෙසේද?


1199

ඔබ පේළියක් තට්ටු කරන විට UITableView, පේළිය උද්දීපනය කර තෝරා ගනු ලැබේ. පේළියක් තට්ටු කිරීමෙන් කිසිවක් සිදු නොවන බැවින් මෙය අක්‍රිය කළ හැකිද?


17
මුල් ප්‍රශ්නයට නරක මාතෘකාවක් ඇත. OP අවශ්‍යතාවය මූලික වශයෙන් අක්‍රීය කිරීම selectionවන අතර ඇත්ත වශයෙන්ම highlightingඑය අක්‍රීය වේ. ඉහළ ඡන්දය දුන් බොහෝ පිළිතුරු disable selectionඅක්‍රීය කිරීම ආමන්ත්‍රණය කරන්නේ කෙසේද සහ නොදන්නේ කෙසේද යන්න පැහැදිලි කරයි highlighting. ඉස්මතු කිරීමේ භාවිතය පමණක් අක්‍රිය කිරීමට cell.selectionStyle = .Noneහෝ යන්නstoryboard / cell / Selection = None
ඇන්ඩ්‍රෙජ්

කරුණාකර මාතෘකාව හෝ ලිපිය යාවත්කාලීන කරන්න. මම ව්යාකුලයි. මෙම ප්‍රශ්නය මත පදනම්ව, ලබා දී ඇති පිළිතුරු කුමක් කිරීමට අදහස් කරන්නේ දැයි මා දන්නේ නැත.
ඩැනියෙල් ස්ප්‍රින්ගර්

Answers:


610

මට නම්, පහත සඳහන් දෑ හොඳින් ක්‍රියාත්මක විය:

tableView.allowsSelection = false

මෙයින් අදහස් කරන්නේ didSelectRowAt#සරලව ක්‍රියා නොකරන බවයි. එනම්, මේසයේ පේළියක් ස්පර්ශ කිරීමෙන් කිසිසේත් කිසිවක් සිදු නොවනු ඇත. (එබැවින්, පැහැදිලිවම, කිසි විටෙකත් තෝරාගත් සජීවිකරණයක් සිදු නොවනු ඇත.)

(නම්, සෛල මත ඇති බව ඔබ සටහන UIButtonවෙනත් ඕනෑම පාලන හෝ, ඇත්තෙන්ම එම පාලනයන් තවමත් වැඩ කරන ක. ඔබ මේසය සෛල මත සිදු ඕනෑම පාලක, ඔබ "පේලියට තෝරා" කිරීමට ඉඩ UITableView හැකියාව මුළුමනින්ම සම්බන්ධයක් නැති භාවිතා didSelectRowAt#කරයි.)

සැලකිල්ලට ගත යුතු තවත් කරුණක් නම්: මෙය UITableViewසංස්කරණ ප්‍රකාරයේදී ක්‍රියාත්මක නොවේ. සංස්කරණ ප්‍රකාරයේදී සෛල තේරීම සීමා කිරීමට පහත කේතය භාවිතා කරන්න:

tableView.allowsSelectionDuringEditing = false 

6
මෙය අවසානයේදී මා වෙනුවෙන් වැඩ කළ අතර, මම cell.selectionStyle = UITableViewCellSelectionStyleNone භාවිතා කිරීමට උත්සාහ කළෙමි; නමුත් එය ක්‍රියාත්මක වූයේ නැත. සැලකිල්ලට ගත යුතු එක් දෙයක්: එය විය යුත්තේ: tableView.allowsSelection = නැත; බොරු නොවේ.
tony.tc.leung

6
මම හිතන්නේ, මෙය හොඳම විකල්පයයි. සෛලවල බොත්තම් මේ සමඟ සක්‍රිය නමුත් පෙළ සක්‍රීය නොවේ.
ෆාහිම් පාකර්

514
මෙය පිළිගත් පිළිතුර වන්නේ කෙසේද? එය කිසිසේත්ම ප්‍රශ්නයට පිළිතුරු සපයන්නේ නැත! ඔබ selectionStyleසෛලය තුළ දේපල සැකසිය යුතුය : cell.selectionStyle = UITableViewCellSelectionStyle.Noneස්විෆ්ට් හෝ cell.selectionStyle = UITableViewCellSelectionStyleNoneඅරමුණු-සී.
නෝඩ්බේස්

5
මෙය මට ස්විෆ්ට් 2 හි වැඩ කරයි.tableView.allowSelection = false
ඛනාද්

15
අපේක්ෂිත දේ අනුව මෙය කිරීමට ක්‍රම කිහිපයක් තිබේ. තෝරා ගැනීමේ ශෛලියක් සහ තේරීමක් යන දෙකම ක්‍රියා කළ නොහැක, නැතහොත් දෙකම අසමත් විය හැකිය. මෙන්න උදාහරණයක්. ඔබට කොටුව තෝරා ගැනීමට අවශ්‍ය නම් සහ tableViewDidSelectRowAtIndexPathඇමතිය යුතු නම් cell.selectionStyle = .Noneඑය අවශ්‍ය වේ. ඔබට එම නියෝජිත ශ්‍රිතය කැඳවීමට අවශ්‍ය නැතිනම් හෝ සැලකිලිමත් නොවන්නේ නම් (එනම්, වගු වීව්සෙල්හි පෙළ ක්ෂේත්‍රයක් තිබීම) සැකසුම tableView.allowsSelection = falseහොඳයි.
Made2k

1970

ඔබ කළ යුතුව ඇත්තේ තේරීම් විලාසය UITableViewCellනිදසුනක් ලෙස සැකසීම පමණි :

පරමාර්ථය-සී:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

හෝ

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

ස්විෆ්ට් 2:

cell.selectionStyle = UITableViewCellSelectionStyle.None

ස්විෆ්ට් 3 සහ 4.x:

cell.selectionStyle = .none

තව දුරටත්, ඔබ එක්කෝ -tableView:didSelectRowAtIndexPath:ඔබේ වගු දර්ශන නියෝජිතයා තුළ ක්‍රියාත්මක නොකරන බවට වග බලා ගන්න හෝ ඔබ එය ක්‍රියාත්මක කරන්නේ නම් ඔබට කිසිදු ක්‍රියාමාර්ගයක් ගැනීමට අවශ්‍ය නොවන සෛල පැහැදිලිවම බැහැර කරන්න.

වැඩි විස්තර මෙතැනින් සහ මෙතැනින්


122
Ony ටෝනි ඔබ සෛලය තුළ UITextField තිබේ නම් එය නරක අදහසකි.
අනිරුද්

73
OnyTonyMillion ඔබට ස්වයිප්-ට-ඩිලීට් වැනි අභ්‍යන්තර සංස්කරණ පාලක භාවිතා කිරීමට අවශ්‍ය නම් එය නරක අදහසකි. ඔබ userInteractionEnabled NO ලෙස සකසා ඇත්නම් මකන්න බොත්තම පරිශීලක ස්පර්ශ සිදුවීම් වලට ප්‍රතිචාර නොදක්වයි.
කාලෝස් පී

47
මෙම ත්‍රෙඩ් එකට ප්‍රමාද වී ඇති නමුත් පරිශීලක මැදිහත්වීම වෙනුවට cell.allowsSelection භාවිතා කරන්න. එය සෛලයේ අන්තර්ක්‍රියා ක්‍රම නවත්වන නමුත් සාමාන්‍ය UIView ප්‍රතිචාර දක්වන දේවල් අවහිර නොකරයි.
ක්‍රිස් සී

4
Cell.userInteractionEnable = නැත .DedSelectRowAtIndexPath අවුලුවාලීම නතර නොවේ.
user4951

25
මම පිළිතුරට ඡන්දය දෙන්නෙමි, නමුත් පැහැදිලිව කිවහොත්, OP ඉල්ලා සිටියේ "උද්දීපනය කිරීම" අක්‍රීය කිරීම සඳහා පමණක් වන අතර, සමස්ත සෛල අන්තර්ක්‍රියා අක්‍රීය නොකරන ලෙසයි.
ෆෙඩ්රික් යෙසිඩ් පීනා සාන්චෙස්

353

මම මෑතකදී මෙම ලිපිය කියවා එය මට උදව් කර ඇති නිසා, සියලු පිළිතුරු ඒකාබද්ධ කිරීම සඳහා තවත් පිළිතුරක් පළ කිරීමට මට අවශ්‍ය විය (පසු පරම්පරාව සඳහා).



එබැවින්, ඔබ අපේක්ෂිත තර්කනය සහ / හෝ ප්‍රති result ලය අනුව වෙනස් පිළිතුරු 5 ක් ඇත:

1. සෛලයේ වෙනත් අන්තර්ක්‍රියා වෙනස් නොකර නිල් ඉස්මතු කිරීම අක්‍රිය කිරීමට:

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

මම UITutViewCell හි සත්කාරකත්වය දරන UIButton එකක් හෝ වෙනත් පාලනයක් (ය) ඇති විට මම මෙය භාවිතා කරන අතර පරිශීලකයාට පාලකයන් සමඟ අන්තර් ක්‍රියා කිරීමට හැකි නමුත් සෛලයම නොවේ.

සටහන : ඉහත සඳහන් කළ ටෝනි මිලියන් මෙය වළක්වන්නේ නැතtableView:didSelectRowAtIndexPath:. මම සරල "නම්" ප්‍රකාශ මගින් මෙය වටහා ගනිමි, බොහෝ විට කොටස පරීක්ෂා කිරීම සහ යම් අංශයක් සඳහා ක්‍රියා කිරීමෙන් වැළකී සිටීම.

මේ වගේ සෛලයක් තට්ටු කිරීම සඳහා පරීක්ෂා කිරීමට මා සිතූ තවත් ක්‍රමයක් නම්:

- (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
    }
}



2. සම්පූර්ණ වගුවක් සඳහා මෙය කිරීමට, ඔබට වගුවේ ඇති සෑම සෛලයකටම ඉහත විසඳුම යෙදිය හැකිය, නමුත් ඔබට මෙයද කළ හැකිය:

[tableView setAllowsSelection:NO];

මගේ පරීක්ෂණයේදී, මෙය තවමත් ඇතුළත පාලනයන් UITableViewCellඅන්තර්ක්‍රියාකාරී වීමට ඉඩ දෙයි .


3. කොටුවක් "කියවීමට පමණි" සෑදීමට ඔබට මෙය කළ හැකිය:

[cell setUserInteractionEnabled:NO];



4. සම්පූර්ණ වගුවක් "කියවීමට-පමණක්" සෑදීමට

[tableView setUserInteractionEnabled:NO];



5. සෛලයක් ඉස්මතු කළ යුතුද යන්න පියාසර කරන විට තීරණය කිරීම සඳහා ( මෙම පිළිතුරට ව්‍යංගයෙන් තේරීම ඇතුළත් වේ), ඔබට පහත සඳහන් UITableViewDelegateප්‍රොටෝකෝලය ක්‍රමය ක්‍රියාත්මක කළ හැකිය :

- (BOOL)tableView:(UITableView *)tableView 
   shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath

3
ඔබ සෛල මෝස්තරය නිබ් එකකින් පටවන්නේ නම්, පිරික්සුම් කොටුව (IB හි) # 3 සඳහා හොඳින් ක්‍රියා කරයි (සහ # 4 සඳහා වගු වල). # 4 එදිරිව # 2 සඳහා, සෛලය තුළ පාලනයන් අන්තර්ක්‍රියාකාරීද නැද්ද යන්න වෙනසද?
lilbyrdie

4
ඔව්. ඔබට තේරීම අක්‍රිය කිරීමට අවශ්‍ය නමුත් UIButtons යනාදිය සඳහා පරිශීලක අන්තර්ක්‍රියාකාරිත්වයට දිගටම සහාය වීමට ඉඩ දෙන්න නම්, # 2 භාවිතා කරන්න. ඔබට සම්පූර්ණයෙන්ම කියවීමට පමණක් ඇති කොටුවක් අවශ්‍ය නම්, # 4 භාවිතා කරන්න. ඇත්ත වශයෙන්ම, අන්තර්ක්‍රියාකාරී නොවන සෛලයක UIViews හෝ UILabels හැර වෙනත් කිසිවක් ඔබට ඇත්තේ මන්දැයි මට ඔබ්බෙන් ය. වෙනත් දෙයක් සිදුවෙමින් තිබියදී යමෙකුට සියලු අන්තර්ක්‍රියා අක්‍රීය කිරීමට අවශ්‍ය වනු ඇත.
mbm29414

8
# 4 භයානක අදහසකි, මෙය කිරීමෙන් වගු දර්ශනයේ අනුචලනය ද අක්‍රීය වනු ඇත
simon

4
im සිමොන් ඇත්ත වශයෙන්ම එය භයානක අදහසක් නොවේ; එය ඔබගේ තත්වයන් අනුව හොඳ විකල්පයක් විය හැකි හෝ නොවිය හැකි එක් විකල්පයකි. එසේම, # 4 USER අනුචලනය අක්‍රීය කරයි; අවශ්‍ය නම් ඔබට තවමත් ඔබේම දෑ ක්‍රියාත්මක කළ හැකිය. මම එකඟ වෙමි # 4 බොහෝ ප්‍රයෝජනවත් නොවන නමුත් එය භයානක අදහසක් නොවේ.
mbm29414

3
සම්පුර්ණත්වය සඳහා කරුණාකර ඔබට කෑගැසීමක් එකතු කළ හැකිය tableView:shouldHighlightRowAtIndexPath:, එය සාමාන්‍යයෙන් (සැමවිටම නොවේ) මගේ ප්‍රියතම ප්‍රවේශයයි.
බෙන්ජොන්

83

මෙය ක්‍රියාවට නැංවීමේ මගේ අත්දැකීම් මත පදනම් වූ නිවැරදි පිළිතුරු යැයි මා විශ්වාස කරන දේ සාරාංශ කිරීම:

සමහර සෛල සඳහා තේරීම අක්‍රිය කිරීමට ඔබට අවශ්‍ය නම්, භාවිතා කරන්න:

cell.userInteractionEnabled = NO;

තේරීම වලක්වා ගැනීම මෙන්ම මෙය වගුව ද නවත්වයි: didSelectRowAtIndexPath: එය සකසා ඇති සෛල සඳහා කැඳවනු ලැබේ. (මෙම පිළිතුර සඳහා ණය ටෝනි මිලියනය වෙත යයි, ස්තූතියි!)

ක්ලික් කිරීමට අවශ්‍ය ඔබේ බොත්තම් බොත්තම් තිබේ නම්, ඒ වෙනුවට ඔබට අවශ්‍ය වන්නේ:

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

තවද ඔබ කොටුවේ ඇති ඕනෑම ක්ලික් කිරීමක් නොසලකා හැරිය යුතුය - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath.

සම්පූර්ණ වගුව සඳහා තේරීම අක්‍රිය කිරීමට ඔබට අවශ්‍ය නම්, භාවිතා කරන්න:

tableView.allowsSelection = NO;

(පාවුලෝ ඩි බැරෝස්ට ණය, ස්තූතියි!)


අපගේ කොටුවේ බොත්තමක් තිබේ නම් කුමක් කළ යුතුද?
උමෙයාර් අෆ්සාල්

56

IOS 6.0 අනුව, UITableViewDelegateඇත tableView:shouldHighlightRowAtIndexPath:. (IOS ප්‍රලේඛනයේ ඒ ගැන කියවන්න .)

සෛල තෝරා ගැනීමේ ශෛලිය වෙනස් කිරීමකින් තොරව, සෛල සිදුවීම් හැසිරවීම සමඟ අවුල් කිරීම userInteractionEnabled = NOහෝ මෙහි ලේඛනගත කර ඇති වෙනත් ශිල්පීය ක්‍රම නොමැතිව නිශ්චිත පේළි උද්දීපනය කළ නොහැකි (සහ ව්‍යංගයෙන්, තෝරාගත නොහැකි) ලෙස සලකුණු කිරීමට මෙම ක්‍රමය ඔබට ඉඩ සලසයි .


2
මෙම ත්‍රෙඩ් එක හරහා පැකිලී ගිය අතර මෙයට පෙර තවත් බොහෝ පිළිතුරු දැකීමෙන් මම කම්පාවට පත් වීමි. මෙය නිසැකවම නිසි මාර්ගයයි.
බීබ්කොන්

2
සැබවින්ම සලකා බැලිය යුතු නිවැරදි හා එකම පිළිතුර මෙයයි. පරිශීලක මැදිහත්වීම ගැන සඳහන් කරන වෙනත් කිසිවක් සම්පූර්ණයෙන්ම වැරදිය.
mattyohe

50

ඔබ තෝරා ගැනීමෙන් ම තනන්නා අතුරු මුහුණත සිට පේළියේ ආබාධිත තෝරා ද හැකි NoSelectionසිට selectionපහත රූපයේ පෙන්වා ඇති පරිදි පොලිස් පරීක්ෂක කවුළුවෙහි (UITableView දේපල) විකල්පය

UITableView පරීක්ෂක


2
හොඳම විසඳුම IMHO
Itai Spector

මම බොහෝ විට මෙම විසඳුම භාවිතා කරමි
Evsenev


36

ඔබේ UITableViewCellගේ XIB ලක්ෂණය පරීක්ෂකගේ වටිනාකම නියම Selectionකිරීමට None.

රූප විස්තරය මෙහි ඇතුළත් කරන්න


මට අවශ්‍ය වූයේ මෙයයි. මට තවමත් අවශ්‍ය වූයේ doSelect ... දැනුම්දීම නමුත් තේරීම පිළිබඳ දෘශ්‍යමාන ඇඟවීමකින් තොරව ය. ස්තූතියි!
තිමෝති ට්‍රිප්

35

ඔබට තේරීම ෆ්ලෑෂ් කිරීමට පමණක් අවශ්‍ය නම්, තෝරාගත් තත්වයේ රැඳී නොසිටින්න, ඔබට ඇමතිය හැකිය

didSelectRowAtIndexPath

පසුව එන

[tableView deselectRowAtIndexPath:indexPath animated:YES];

එබැවින් එය තෝරාගත් තත්වය ෆ්ලෑෂ් කර ආපසු හරවනු ඇත.


3
මෙම ප්‍රවේශයත් සමඟ පේළිය ක්ෂණිකව ඉස්මතු වන අතර තත්පර භාගයකට වඩා මැකී යයි. ඇපල් ඔවුන්ගේ සැකසුම් මෙනු මෝස්තර කරන්නේ එලෙසයි, එබැවින් එය මට හොඳ පෙනුමක්.
වින්ස්ෆියර්

34

ස්විෆ්ට් සඳහා යමෙකුට පිළිතුරු අවශ්‍ය නම් :

cell.selectionStyle = .None

1
අපට මෙම කොටුවද භාවිතා කළ හැකිය. SelectionStyle = UITableViewCellSelectionStyle.None
bible


28

සිට UITableViewDelegateප්රොටොකෝලය ඔබ ක්රමය භාවිතා කල හැක willSelectRowAtIndexPath හා return nilඔබ පේළිය තෝරා අවශ්ය නැති නම්.

ඒ ආකාරයෙන්ම ඔබට willDeselectRowAtIndexPathක්‍රමවේදය භාවිතා කළ හැකි return nilඅතර පේළිය තෝරා නොගැනීමට ඔබට අවශ්‍ය නැතිනම්.


5
මම මෙම ක්‍රමයට කැමති නැත, මන්ද එය ස්පර්ශ වන තෙක් සෛලය එහි උද්දීපනය කළ තත්වයේ තවමත් පෙන්වයි.
kbanman

2
ඒ නිසයි මම එයට කැමති :-)
ජෝරිස් වයිමර්

24

1- ඔබ කළ යුතුව ඇත්තේ තෝරා ගැනීමේ ශෛලියUITableViewCell නිදසුනක් ලෙස සැකසීම පමණි :


පරමාර්ථය-සී:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

හෝ

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];


ස්විෆ්ට් 2:

cell.selectionStyle = UITableViewCellSelectionStyle.None


ස්විෆ්ට් 3:

cell.selectionStyle = .none


2 - ක්‍රියාත්මක නොකරන්න - tableView:didSelectRowAtIndexPath:ඔබේ වගු දැක්ම තුළ delegateහෝ ඔබ එය ක්‍රියාත්මක කරන්නේ නම් ඔබට කිසිදු ක්‍රියාමාර්ගයක් ගැනීමට අවශ්‍ය නොවන සෛල පැහැදිලිව බැහැර කරන්න.

3 - තවද, ඔබට එය කතන්දර පුවරුවෙන්ද කළ හැකිය. වගු දර්ශන කොටුව ක්ලික් කරන්න සහ වගු දර්ශන කොටුව යටතේ ඇති ගුණාංග පරීක්ෂක තුළ, තේරීමට යාබදව පහළට පහළට පහළට කිසිවක් වෙනස් නොකරන්න.


4 - (iOS) Xcode 9, Swift 4.0 හි පහත කේතය භාවිතා කර ඔබට වගු සෛල උද්දීපනය අක්‍රිය කළ හැකිය

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {


        let cell = tableView.dequeueReusableCell(withIdentifier: "OpenTbCell") as! OpenTbCell
        cell.selectionStyle = .none
        return cell


}

20

පරමාර්ථය-සී:

  1. ස්නිපටයට පහළින් උද්දීපනය කිරීම අක්‍රීය නමුත් එය ඇමතුම අක්‍රීය කරයි didSelectRowAtIndexPath. එබැවින් ඔබ ක්‍රියාත්මක නොකරන්නේ didSelectRowAtIndexPathනම් පහත ක්‍රමය භාවිතා කරන්න. ඔබ වගුව නිර්මාණය කරන විට මෙය එකතු කළ යුතුය. මෙය බොත්තම් මත සහ UITextFieldකොටුව තුළ ක්‍රියා කරයි.

    self.tableView.allowsSelection = NO;
  2. ස්නිපටයට පහළින් උද්දීපනය කිරීම අක්‍රීය කරන අතර එය ඇමතුම අක්‍රීය නොකරයි didSelectRowAtIndexPath. කොටුවේ තේරීමේ විලාසය කිසිවක් ඇතුලත සකසන්නcellForRowAtIndexPath

    cell.selectionStyle = UITableViewCellSelectionStyleNone;
  3. ස්නිපටයට පහළින් කොටුවේ ඇති සියල්ල අක්‍රීය කරන්න. මේ අතර අන්තර් අක්රීය කරනු ඇත buttons, textfields:

    self.tableView.userInteractionEnabled = false;

ස්විෆ්ට්:

Swiftඉහත Objective-Cවිසඳුම් වලට සමාන පහත දැක්වේ :

  1. පළමු විසඳුම ප්රතිස්ථාපනය කිරීම

    self.tableView.allowsSelection = false
  2. දෙවන විසඳුම ප්රතිස්ථාපනය කිරීම

    cell?.selectionStyle = UITableViewCellSelectionStyle.None
  3. තෙවන විසඳුම ප්රතිස්ථාපනය කිරීම

    self.tableView.userInteractionEnabled = false

19

ටයිප් කිරීමට උත්සාහ කරන්න:

cell.selected = NO;

අවශ්‍ය විටදී එය ඔබේ පේළිය තෝරා නොගනී.

ස්විෆ්ට් 3 හි ...

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let r = indexPath.row
    print("clicked .. \(r)")
    tableView.cellForRow(at: indexPath)?.setSelected(false, animated: true)
}

14

දේපල UITableViewCellභාවිතය තහනම් කර ඇති බවට පාලනයක් තිබීම නිසා මම මේ සමඟ ද දැඩි ලෙස පොරබදමින් සිටිමි userInteractionEnabled. මට සැකසුම් සඳහා සෛල 3 ස්ථිතික වගුවක් ඇත, 2 දිනයන් සමඟ, 1 සක්‍රිය / අක්‍රිය ස්විචයක් ඇත. ස්ටෝරිබෝඩ් / අයිබී හි සෙල්ලම් කිරීමෙන් පසු පහළ කොටස තෝරාගත නොහැකි තත්වයට පත් කිරීමට මට හැකි වී ඇත, නමුත් ඔබ එය තට්ටු කරන විට ඉහළ පේළි වලින් එකක් තේරීම අතුරුදහන් වේ. මෙන්න මගේ සැකසුම් වල WIP රූපයක් UITableView:

සැකසුම් UITableView

ඔබ 3 වන පේළිය තට්ටු කළහොත් කිසිවක් සිදු නොවේ, තේරීම දෙවන පේළියේ රැඳෙනු ඇත. ක්‍රියාකාරීත්වය ප්‍රායෝගිකව ඇපල් හි දින දර්ශන යෙදුමේ සිදුවීම් සිදුවීම් තේරීමේ තිරයේ පිටපතකි.

කේතය පුදුම සහගත ලෙස අනුකූල වේ, සියල්ලම IOS2 = /:

- (NSIndexPath *)tableView: (UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.row == 2) {
        return nil;
    }
    return indexPath;
}

මෙය තේරීමේ විලාසය කිසිවෙකුට සැකසීමට සමගාමීව ක්‍රියා කරයි, එබැවින් ස්පර්ශක සිදුවීම් මත කොටුව නොපෙනේ


11

අපට වැනි කේත ලිවිය හැකිය

 cell.selectionStyle = UITableViewCellSelectionStyleNone;

නමුත් අපට අභිමත කොටුව xib පේළියට ඉහළින් ඇති විට ඒ සඳහා අනතුරු ඇඟවීමක් කරන්න

අභිරුචි සෛල xib

අපට තේරීමේ විලාසය සැකසිය යුතුය අතුරුමුහුණත් සාදන්නාගෙන් කිසිවක් නැත


11

ඔබට මෙම කේතය cellForRowAtIndexPath තුළට දැමිය යුතුය

සෛල තේරීමේ දේපල අක්‍රීය කිරීමට: (කොටුව තට්ටු කරන අතරතුර).

cell.selectionStyle = UITableViewCellSelectionStyle.None

ස්තූතියි, මගේ කොටුවේ රූපයක් සහ ඊට ඉහළින් ලේබලයක් ඇත. මම ලේබල් පසුබිම සකසා ඇත, නමුත් මම ක්ලික් කළ සෑම අවස්ථාවකම පසුබිම අතුරුදහන් වනු ඇත, මෙය විසඳා ඇත.
ඩාර්කෝ

10

මේක උත්සාහ කරන්න

cell.selectionStyle = UITableViewCellSelectionStyleNone;

සහ

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

තවද ඔබට අතුරුමුහුණත භාවිතා කර තේරීමේ විලාසය සැකසිය හැකිය.



7

පේළියක් තෝරාගැනීමේදී උද්දීපනය වීම වැළැක්වීම සඳහා මෙය හොඳම සහ පහසුම විසඳුම වන අතර

cell.selectionStyle = UITableViewCellSelectionStyleNone;

පේළිය තෝරාගෙන ඇති බව කෙටියෙන් පෙන්වීම සහ එය ක්‍රියා විරහිත කිරීම ඉඳහිට ප්‍රයෝජනවත් යැයි මම යෝජනා කිරීමට කැමැත්තෙමි. මෙය පරිශීලකයින්ට තෝරා ගැනීමට අදහස් කළ දේ සනාථ කරමින් අනතුරු අඟවයි:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
     [tableView deselectRowAtIndexPath:indexPath animated:NO];
...
}


6

UItableviewcell හි උද්දීපනය අක්‍රීය කිරීම

cell.selectionStyle = UITableViewCellSelectionStyleNone;

තවද පරිශීලකයාට සෛලය සමඟ අන්තර් ක්‍රියා කිරීමට ඉඩ නොදිය යුතුය.

cell.userInteractionEnabled = NO;

6

ඔබට UITableViewCellSelectionStyleNoneභාවිතා කිරීමට අවශ්‍ය නැතිනම් / භාවිතා කළ නොහැකි අවස්ථාවල දී සමාන ප්‍රති achieve ල ලබා ගැනීම සඳහා ඔබට පසුබිම් වර්ණය හිස් ලෙස සැකසිය හැකිය UITableViewCellSelectionStyleNone.

ඔබ පහත සඳහන් පරිදි කේත භාවිතා කරනු ඇත:

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

ඔබ එක් එක් සෛලයට අමතර වර්ණ දර්ශනයක් එක් කිරීම නිසා මෙය ඔබගේ ක්‍රියාකාරිත්වය පිරිහීමට ලක් කරයි.


6

ඔයාට පාවිච්චි කරන්න පුළුවන් :

cell.selectionStyle = UITableViewCellSelectionStyleNone;

ඔබේ UITableView හි දර්ශක මාර්ග ක්‍රමයේ පේළිය සඳහා කොටුව තුළ.

ඔබට භාවිතා කළ හැකිය:

[tableView deselectRowAtIndexPath:indexPath animated:NO];

වගු දැක්මෙහි didselectrowatindexpath ක්‍රමය.


එය දැන් cell.selectionStyle = UITableViewCellSelectionStyle.noneස්විෆ්ට් 3 හි ඇත.
ඩෑන්

6

UITableViewDataSource ප්‍රොටොකෝලය වෙතින් , ඇතුළත ක්‍රමය cellForRowAtඑකතු කරන්න:

let cell = tableView.dequeueReusableCell(withIdentifier: "YOUR_CELL_IDENTIFIER", for: indexPath)                
cell.selectionStyle = .none
return cell

හෝ

ඔබට කතන්දර පුවරුව> කොටුව> හැඳුනුම් පරීක්ෂක> තේරීම තෝරාගෙන පතන සිට කිසිවක් තෝරන්න.


5

ඔබට මෙය භාවිතා කළ හැකිය

cell.selectionStyle = UITableViewCellSelectionStyleNone;

5

ඔයාට පාවිච්චි කරන්න පුළුවන් ....

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];


5
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
[cell setSelected:NO animated:NO];
[cell setHighlighted:NO animated:NO];

සුබ කේතීකරණයක් !!!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.