SWRevealViewController من وحدة تحكم إلى أخرى
-
21-12-2019 - |
سؤال
أنا أعمل مع SWRevealViewController
للحصول على قائمة جانبية في التطبيق.يعمل كما هو متوقع من القائمة الجانبية إلى وحدة التحكم.ما أود فعله الآن هو الاستخدام SWRevealViewController
مرة أخرى من وحدة تحكم إلى أخرى (كلاهما UITableViewController
).
من القائمة الجانبية إلى وحدة التحكم 1 إلى وحدة التحكم 2:
هذا ما حاولت القيام به حتى الآن:
قم بإعداد 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];
}
يتم عرض تحديد عنصر من القائمة على أنه محدد ولكن لا يحدث شيء.
لقد اختبرت ذلك باستخدام 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]
يعيد تحميل الجدول ببيانات جديدة.