سؤال

لقد مررت هذا السؤال هذا يوضح الرمز التالي:

-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{
    return @"Sagar";
}

ماذا لو أردت صورة مخصصة بدلاً من الزر الأحمر الافتراضي؟

هل كانت مفيدة؟

المحلول

Luvieere على حق - إذا كنت تريد نفس الاستعارة "حذف" ، فأنت تريد الاحتفاظ بها في الزر الأحمر الذي توفره Apple. لماذا تغييره؟ يمكن التعرف عليها عالميا مثل اساسي لحذف الأزرار.

على الرغم من أنه إذا كنت تريد شيئًا مثل Tweetie ، فأين أنت تماما تغيير سلوك الضرب ، يمكنك استخدام شيء مثل AbtableViewCell حيث ترسم فقط في عرضك الخاص. قم بعمل طريقة عرض مخصصة ، والتجاوز -touchesbegan: withEvent: ، والتحقق من اللمسات. احسب دلتا اللمسات (في اللمسات: withEvent :) وحرك وجهة نظرك الخاصة حولها.

نصائح أخرى

تنفيذ هذه الطريقة في الخلية المخصصة

- (void)willTransitionToState:(UITableViewCellStateMask)state{
    [super willTransitionToState:state];
    if ((state & UITableViewCellStateShowingDeleteConfirmationMask) == UITableViewCellStateShowingDeleteConfirmationMask) {
        for (UIView *subview in self.subviews) {
            if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationControl"]) {
                UIImageView *deleteBtn = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 64, 33)];
                [deleteBtn setImage:[UIImage imageNamed:@"delete.png"]];
                [[subview.subviews objectAtIndex:0] addSubview:deleteBtn];
                [deleteBtn release];
            }
        }
    }
}

هذا رد متأخر ولكن آمل أن يجد شخص ما هذا مفيدًا. لذا ، فإن الإجابة المقبولة تبدو معقدة بالنسبة لي ، و @user1684899 لا تعمل إجابة فقط إذا كنت تريد فقط تغيير مظهر الزر الحذف. أرغب في تغيير ظهور زر الحذف تمامًا (أي إطاره ، الموضع ، وما إلى ذلك) ، لذلك فإن الحل الخاص بي هو إضافة زر الحذف الخاص بي إلى خلية مخصصة وتبقيه مخفيًا في البداية ، وإظهاره فقط عندما تكون الخلية في وضع التحرير. والأهم من ذلك ، أريد إخفاء زر الحذف الأصلي من iOS ودعم التوافق الخلفي ، وهنا خدعة:

- (void)willTransitionToState:(UITableViewCellStateMask)state
{
    [super willTransitionToState:state];
    if ((state & UITableViewCellStateShowingDeleteConfirmationMask) == UITableViewCellStateShowingDeleteConfirmationMask)
    {
        if (!IS_IOS_7){
            for (UIView *subview in self.subviews)
            {
                if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationControl"])
                {
                    // hide original button
                    [[subview.subviews objectAtIndex:0] setHidden:YES];
                    // show my custom button
                    [self.deleteButton setHidden:NO];
                }
            }

        } else {
            for (UIView *subview in self.subviews) {
                for (UIView *subview2 in subview.subviews) {
                    if ([NSStringFromClass([subview2 class]) rangeOfString:@"Delete"].location != NSNotFound) {
                        // hide original button
                        [subview2 setHidden:YES];
                        // show my custom button
                        [self.deleteButton setHidden:NO];
                    }
                }
            }
        }
    } else {
        // hide my custom button otherwise
        [self.deleteButton setHidden:YES];
    }
}

ولا تنسى أن تضيف:

[cell.deleteButton addTarget:self action:@selector(deleteEntryAtIndexPath:) forControlEvents:UIControlEventTouchUpInside];

في cellForRowAtIndexPath, ، بحيث يمكنك إضافة أي شيء تريده عند النقر فوق الزر الحذف. ها هي نتيجتي:

enter image description here

إن معيار نظام النظام لعمل الغوص المقصود ، كما قلت في التعليق على إجابة Luvieere ، هو استخدام ملحق خلية الإفصاح التفصيلي (السهم الزرقاء) ، وليس لفتة التمرير.

ومع ذلك ، إذا كنت لا تزال ترغب في استخدام إجراء Swipe لهذا ، فلا توجد طريقة لتوفير الزر الخاص بك دون اعتراض يدويًا وإعادة تنظيم إيماءة التمرير تمامًا ، مثل ما تفعله Tweetie.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top