كيف يمكنني تخصيص صورة الكشف عن الملحقات في UITableViewCell؟

StackOverflow https://stackoverflow.com/questions/403748

  •  03-07-2019
  •  | 
  •  

سؤال

أرغب في استخدام إصدار مخصص من صورة ملحق الكشف القياسي في UITableView الخاص بي.كيف يمكنني أن أفعل هذا؟آمل ألا يكون التصنيف الفرعي UITableViewCell ضروريًا لشيء أساسي كهذا.

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

المحلول

وستحتاج إلى إنشاء طريقة عرض مخصصة وإسناد ذلك إلى الخاصية accessoryView الكائن UITableViewCell. شيء من هذا القبيل:

myCell.accessoryView = [[ UIImageView alloc ] 
                       initWithImage:[UIImage imageNamed:@"Something" ]];

نصائح أخرى

- (UITableViewCell *)tableView:(UITableView *)tView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    UIImage *indicatorImage = [UIImage imageNamed:@"Arrow.png"];
    cell.accessoryView =[[[UIImageView alloc]  initWithImage:indicatorImage] autorelease];


    return cell;
}

وكذلك أفعل هذا مع رمز المساعدة المذكورة أعلاه

وأنا واجهت نفس المشكلة كما جريج - وجهة نظر التبعي لا تتبع (إذا كنت تستخدم UIImageView)

وأنا حلها مثل هذا:

UIImage * image = [ UIImage imageNamed:@"disclosure-button-grey.png" ] ;
UIControl * c = [ [ UIControl alloc ] initWithFrame:(CGRect){ CGPointZero, image.size } ] ;

c.layer.contents = (id)image.CGImage ;
[ c addTarget:self action:@selector( accessoryTapped: ) forControlEvents:UIControlEventTouchUpInside ] ;
cell.accessoryView = c ;
[ c release ] ;

وهناك من أبل تبين كيفية استخدام UIControl لتحقيق هذا النوع من accessoryView التخصيص.

و- (void)drawRect:(CGRect)rect تجاوز في UIControl ليس أسهل طريقة، ولكن يمنحك الكثير من المرونة لأسلوب وجهات النظر التبعي لطيفة.

وأنا سوف نفعل ذلك على النحو التالي:

UIImageView *chevronImgVw = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"chevron_accessory_vw_img.png"]];
chevronImgVw.frame = CGRectMake(cell.accessoryView.frame.origin.x, cell.accessoryView.frame.origin.y, 10, 20);
cell.accessoryView = chevronImgVw;

يرجى، جرب هذا قبل أسفل التصويت! لأنه في اللحظة التي لديها 2 upvotes و 2 downvotes!

وحاولت رمز أعلاه، وأنه لا يبدو قادرا على العمل بعد الآن، وربما يرجع ذلك إلى سن هذا المنصب ولذا فإنني سوف يلقوا خط بلدي الذي أعطاني عرض الإكسسوارات المخصصة.

[cell setAccessoryView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrowBtn"]]];

والأمل هناك من يرى أن هذا مفيد.

ملحوظة:لا تقم بتعيين خلية مخصصة للعلامة:0.هذه العلامة محجوزة لعرض textLabel.إذا قمت بتعيين العلامات في Xcode Storyboard، يجب عليك تعيين علامات لطرق العرض/التسميات المخصصة على 1 أو أعلى.

لاحظ مثال أبل:

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath (NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];

    UILabel *label;

    label = (UILabel *)[cell viewWithTag:1];
    label.text = [NSString stringWithFormat:@"%d", indexPath.row];

    label = (UILabel *)[cell viewWithTag:2];
    label.text = [NSString stringWithFormat:@"%d", NUMBER_OF_ROWS - indexPath.row];

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