سؤال

وأود أن إنشاء طريقة عرض الشبكة في بلدي التطبيق فون مماثلة لتلك التي تظهر في الصور باد التطبيق . هل هناك مكتبة أو الإطار المتاحة لإضافة هذا النوع من الوظائف (غير SDK)؟ ومن الناحية المثالية أود أن وضع في نهاية المطاف نسخة باد من التطبيق، حيث الشبكة ستكون 3 بنود واسعة في صورة و4 في المشهد، ولكن في الوقت الراهن أود 2 بنود واسعة في صورة و3 اسعة في المناظر الطبيعية.

والطريقة الوحيدة التي يمكنني أن أفكر في القيام بذلك عن طريق إن شاء subclasses ترث UITableView وجود خلية مخصصة التي تخلق البنود 2 أو 3. ولكن هذا يبدو فوضوي وأنا واثق من أن هناك طريقة أفضل.

وعنصر نموذجي سيكون لها صورة، والتسمية وزر - شيء معقد للغاية

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

المحلول

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

نصائح أخرى

لدائرة الرقابة الداخلية 6 أو أعلى أوصي <لأ href = "https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UICollectionView_class/Reference/Reference.html#//apple_ref/doc/ رمز المستخدم / TP40012177 "يختلط =" noreferrer "> UICollectionView و PSTCollectionView .

<اقتباس فقرة>   

والهدف هو استخدام PSTCollectionView على دائرة الرقابة الداخلية 4/5 كما تراجع و   التبديل إلى UICollectionView على نظام التشغيل iOS6. ونحن حتى استخدام بعض الحيل وقت التشغيل   لخلق UICollectionView في وقت التشغيل للإصدارات القديمة من دائرة الرقابة الداخلية.   من الناحية المثالية، كنت مجرد ربط الملفات ويعمل كل شيء على كبار السن   الأنظمة.

في عام 2010 أوصيت AQGridView

وأنا على علم هذا هو قديم جدا ولكن كنت تبحث عن الإجابة على هذا والعديد من الحلول التي تم اختبارها. لقد وجدت كان GMGridView واحدة من أفضل الحلول، ما لا يقل عن عربات التي تجرها الدواب. التحقق من ذلك في https://github.com/gmoledina/GMGridView .

لجعل عرض الشبكة بسيط في عرض الجدول الخاص بك إنشاء فئة "GridViewCell" وفي رأس الملف إضافة:

@interface GridViewCell : UITableViewCell

@property (nonatomic, strong)  UIButton *column1;
@property (nonatomic, strong)  UIButton *column2;
@property (nonatomic, strong)  UIButton *column3;

@end

في الملف. م إضافة هذا الرمز:

#define CELL_WIDTH 100
#define CELL_HEIGHT 80

#import "GridViewCell.h"

@implementation GridViewCell

@synthesize column1, column2, column3;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
    column1 = [[UIButton alloc] initWithFrame:CGRectMake(5, 5, CELL_WIDTH, CELL_HEIGHT)];
    [self addSubview:column1];
    column2 = [[UIButton alloc] initWithFrame:CGRectMake(CELL_WIDTH+ 10, 5, CELL_WIDTH, CELL_HEIGHT)];
    [self addSubview:column2];
    column3 = [[UIButton alloc] initWithFrame:CGRectMake(CELL_WIDTH + CELL_WIDTH + 15, 5, CELL_WIDTH, CELL_HEIGHT)];
    [self addSubview:column3];
}
return self;
}

@end

وعند إنشاء استخدام الجدول الخاص بك فئة جديدة "GridView" في cellForRowAtIndexPath المفوض:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    GridViewCell *cell = (GridViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[GridViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    [cell.column1 setBackgroundColor:[UIColor blackColor]];
    [cell.column2 setBackgroundColor:[UIColor blackColor]];
    [cell.column3 setBackgroundColor:[UIColor blackColor]];

    return cell;
}

وNRGridView يبدو أن أفضل طريقة للتغلب. يمكنك العثور عليها هنا .

ووديه أساليب مماثلة لUITableView. الخلايا يمكن تخصيص حسب مقتضى الحال.

وأنصح باستخدام UITableViewCells المخصصة. في دائرة الرقابة الداخلية 5 لم يكن لديك إلى فئة فرعية لهم. فقط إضافة tableView لمشروعك، إضافة خلايا النموذج (= خلية مخصصة) باستخدام كسكودي إلى tableView، ومنحهم معرف فريد واستخدام هذا المعرف في cellForRowAtIndexPath إلى dequeue ومثيل خلية المخصصة. ثم تعيين خلية وإعادته.

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