سؤال

أنا أعمل مع SWRevealViewController للحصول على قائمة جانبية في التطبيق.يعمل كما هو متوقع من القائمة الجانبية إلى وحدة التحكم.ما أود فعله الآن هو الاستخدام SWRevealViewController مرة أخرى من وحدة تحكم إلى أخرى (كلاهما UITableViewController).

من القائمة الجانبية إلى وحدة التحكم 1 إلى وحدة التحكم 2:

enter image description here

هذا ما حاولت القيام به حتى الآن:

قم بإعداد Real View Controller Segue من منشئ الواجهة إلى وحدة التحكم الثانية باستخدام identifier "articlesSegue".

وفي أول وحدة تحكم أستخدمها didSelectRowAtIndexPath و prepareForSegue لإظهار وحدة التحكم الثانية:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Set selected issue to var
    _selectedIssue = _feedItems[indexPath.row];

    // Manually call segue to detail view controller
    [self performSegueWithIdentifier:@"articlesSegue" sender:self];
}

#pragma mark Segue

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Get reference to the destination view controller
    TableViewController *tableVC = segue.destinationViewController;

    // data used in the second Controller
    tableVC.self.type = @"category";
    tableVC.self.data = [_selectedIssue.ID stringValue];
}

يتم عرض تحديد عنصر من القائمة على أنه محدد ولكن لا يحدث شيء.

enter image description here

لقد اختبرت ذلك باستخدام Push Segue وقد نجح، وما زلت أفضل العمل معه SWRevealViewController.

لقد وجدت هذا السؤال ولكني لست متأكدًا من كيفية تنفيذه، SWRevealViewController - التبديل يدويًا إلى طريقة عرض أخرى؟.

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

المحلول

كما أوضح @Anbu.Kathik، لم أتمكن من استخدام SWReveal للانتقال من Controller إلى آخر Controller.لقد قمت بحلها باستخدام نفس TableViewController, ، لقد قمت بإضافة خاصية type للتحقق من "عرض الجدول" الحالي وتحديث الجدول ببساطة عند تحديد عنصر ما didSelectRowAtIndexPath.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // check type of current tableview - if category display article
    if ([self.type isEqualToString:@"category"]) {
        // display single article
        _selectedArticle = _feedItems[indexPath.row];
        [self performSegueWithIdentifier:@"detailSegue" sender:self];
    }
    else {
        // else if issue display list of articles on the same TableViewController
        _selectedIssue = _feedItems[indexPath.row];
        self.type = @"category";
        self.data = [_selectedIssue.ID stringValue];
        [_homeModel downloadItems:self.type :self.data];
    }
}

استخدام [self.tableView reloadData] يعيد تحميل الجدول ببيانات جديدة.

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