आपको layoutSubviews
ओवरराइड करना होगा और निम्न की तरह कुछ करना होगा। और 0 से अधिक कुछ के लिए इंडेंटेशन स्तर सेट करना न भूलें :) कस्टम कोशिकाओं के लिए इंडेंटेशन स्तर डिफ़ॉल्ट रूप से लागू नहीं होता है।
इशारा हटाने के लिए एकल स्वाइप के लिए इंडेंटेशन से बचने के लिए आपको एक और काम करना होगा। एक ऐसा राज्य है जो सेल की संपादन स्थिति को प्रतिबिंबित करता है। यह सार्वजनिक नहीं है लेकिन - (void)willTransitionToState:(UITableViewCellStateMask)aState
के साथ पहुंचा जा सकता है, इसलिए इसे किसी संपत्ति में संग्रहीत करना लेआउट व्यू के लिए काम करता है।
willTransitionToState के लिए एप्पल के प्रलेखन:
ध्यान दें कि जब उपयोगकर्ता एक सेल स्वाइप यह सेल संक्रमण करने के लिए राज्य UITableViewCellStateShowingDeleteConfirmationMask निरंतर द्वारा की पहचान को नष्ट करने के लिए, लेकिन UITableViewCellStateShowingEditControlMask है सेट नहीं।
हेडर फाइल
int state;
...
@property (nonatomic) int state;
...
सेल कार्यान्वयन
@synthesize state;
...
- (void)layoutSubviews
{
[super layoutSubviews];
self.contentView.frame = CGRectMake(0,
self.contentView.frame.origin.y,
self.contentView.frame.size.width,
self.contentView.frame.size.height);
if (self.editing
&& ((state & UITableViewCellStateShowingEditControlMask)
&& !(state & UITableViewCellStateShowingDeleteConfirmationMask)) ||
((state & UITableViewCellStateShowingEditControlMask)
&& (state & UITableViewCellStateShowingDeleteConfirmationMask)))
{
float indentPoints = self.indentationLevel * self.indentationWidth;
self.contentView.frame = CGRectMake(indentPoints,
self.contentView.frame.origin.y,
self.contentView.frame.size.width - indentPoints,
self.contentView.frame.size.height);
}
}
- (void)willTransitionToState:(UITableViewCellStateMask)aState
{
[super willTransitionToState:aState];
self.state = aState;
}
स्रोत
2011-04-19 08:04:08
क्या आपको कोई समाधान मिला? मैं एक ही मुद्दे से पीड़ित हूं। धन्यवाद। – harshitgupta