اختيار سلاسل للUITableViewCell - مجموعة أو بيان التبديل؟

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

  •  06-07-2019
  •  | 
  •  

سؤال

عند إنشاء مصدر البيانات UITableView، وسأكون مهتما للحصول على وجهات النظر حول أيهما أفضل، حل A:

NSString *labelText;

switch (indexPath.row) {
    case 0:
        labelText = @"Setup New Match";
        break;
    case 1:
        labelText = @"Teams";
        break;
    case 2:
        labelText = @"Players";
        break;
    case 3:
        labelText = @"Archive";
        break;
}

cell.textLabel.text = labelText;

وأو حل B؟

NSArray *labels = [NSArray arrayWithObjects:@"String 1", @"String 2", @"String 3", @"String 4", nil];

cell.textLabel.text = [labels objectAtIndex:indexPath.row];

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

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

المحلول

وعندما أفعل هذا، وأنا استخدم عبارة التبديل. ومع ذلك، إذا كنت تريد أن تذهب مع أسلوب مجموعة وليس إنشاء مجموعة في كل مرة، هل يمكن استخدام C مجموعة ثابتة أو شيء:

static NSString * const labels[] = {@"String 1", @"String 2", @"String 3", @"String 4"};

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    //Get the cell in the normal way.  No array stuff here
    //...
    cell.textLabel.text = labels[indexPath.row];
}

نصائح أخرى

إذا كنت من محبي العالقة مع حل B يمكنك جعل حياتك ثابت تسميات مجموعة التي ينبغي القضاء على النفقات العامة من خلق مجموعة في كل مرة.

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

وأنا أفضل حل A.

وإذا لم مجموعة الخاصة بك قبل الخروج أنا لن تستخدم B. ومع ذلك، أنا أعمل على التطبيق مع الفروع، واستخدام عبارة التبديل لتحديد أي قسم، ثم ملء مع البيانات من الموجودة من قبل المصفوفات.

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