الإجراء: الموقع (Showalert :) كيفية تمرير المعلمة في هذه الطريقة Showalert؟

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

سؤال

أنا أضيف زر مخصص إلى بلدي UITableViewCell. وبعد في عمل هذا الزر أريد الاتصال به showAlert: وظيفة وتريد تمرير تسمية الخلية في الطريقة.

كيف يمكنني اجتياز معلمة في هذا showAlert طريقة: action:@selector(showAlert:)?

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

المحلول

هذا غير ممكن. عليك إنشاء طريقة مطابقة للإيذاء

- (IBAction)buttonXYClicked:(id)sender;

في هذه الطريقة، يمكنك إنشاء واستدعاء UAIALERTVIEW. لا تنس توصيل الزر بالطريقة في باني واجهة.

إذا كنت ترغب في التمييز بين أزرار متعددة (على سبيل المثال، فستكون لديك واحدة في كل خلية جدول)، فيمكنك ضبط خاصية العلامة للزر. ثم تحقق من sender.tag من أي زر يأتي النقر.

نصائح أخرى

إذا كنت تستخدم الزر في TableViewCell، فعليك إضافة قيمة علامة إلى كل زر خلية وتعيين طريقة AddTarget مع معرف معرف كمعلمة.

عينة من الرموز:

عليك اكتب رمز أدناه cellForRowAtIndexPath طريقة.

{

     // Set tag to each button
        cell.btn1.tag = indexPath.row; 
        [cell.btn1 setTitle:@"Select" forState:UIControlStateNormal];  // Set title 

     // Add Target with passing id like this
        [cell.btn1 addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];    


     return cell;

}

-(void)btnClick:(id)sender
{

    UIButton* btn = (UIButton *) sender;

     // here btn is the selected button...
        NSLog(@"Button %d is selected",btn.tag); 


    // Show appropriate alert by tag values
}

إجابة Jay رائعة ولكن إذا كان لديك أقسام متعددة، فلن تعمل ذلك منذ فهرس محلي إلى قسم.

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

حيث تعلن زرك في محمل كسول:

- (UIButton *)awesomeButton
{
    if(_awesomeButton == nil)
    {
        _awesomeButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        [_awesomeButton addTarget:self.drugViewController action:@selector(buttonPressed:event:) forControlEvents:UIControlEventTouchUpInside];
    }

    return _awesomeButton;
}

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

وظيفة الزر مدمن مخدرات

- (void)buttonPressed:(id)sender event:(id)event
{
    NSSet *touches = [event allTouches];
    UITouch *touch = [touches anyObject];

    CGPoint currentTouchPosition = [touch locationInView:self.tableView];
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint: currentTouchPosition];

    NSLog(@"Button %d was pressed in section %d",indexPath.row, indexPath.section);
}

المفتاح هنا هو وظيفة indexPathForRowAtPoint. وبعد هذه هي وظيفة Nifty في UITableView من شأنها أن تعطيك الفهرستين في أي وقت. مهم أيضا هي الوظيفة locationInView لأنك تحتاج إلى لمسة في سياق الجدول الميبري حتى تتمكن من تحديد الفهروسات المحددة.

سيتيح لك ذلك معرفة أي زر، في جدول مع أقسام متعددة.

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