سؤال

لدي UITABBARCONTROLLER كجزء من مندوب تطبيقي وأريد فخ عندما يمس المستخدم علامة تبويب محددة (المفضلة) وإجبار الجدول داخلها لإعادة تحميل البيانات.

ما هي أفضل الممارسات في هذه الحالة؟

لقد أضفت بروتوكول UITABBARDELEGATE إلى تطبيقي تطبيقي ونفذت طريقة DistSelectViewController. حتى الان جيدة جدا. ضمن الطريقة أحصل على ViewController، لذلك يمكنني التحقق من عنوانها، وما إلى ذلك لتحديد علامة التبويب المحددة.

كيف يمكنني بعد ذلك إرسال رسالة ReadoData إلى OtherView في ViewController؟ حاولت إنشاء طريقة في فئة FavouritesViewController الخاصة بي واستدعت ذلك، لكنها لا تعمل.

رمز المثال:

#pragma mark UITabBarController delegate methods

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
   // If the favourites tab is pressed then reload the data
   if (viewController.title = @"Favourites")
   {
      if ([viewController respondsToSelector:@selector(reloadFavourites:)]) 
      {
         [viewController reloadFavourites];
      }
   }
} 
هل كانت مفيدة؟

المحلول

يبدو وكأنه تحتاج إلى إضافة [UITableView reloadData] إلى TableViewController viewWillDisplay طريقة. سيؤدي ذلك إلى إعادة تحميل الجدول في كل مرة يتم عرضه.

إذا كنت ترغب في إجبار إعادة التحميل، فسيتم عرض الجدول الميبري بالفعل، ثم استدعاء إعادة التحميل من الأسلوب الذي قمت بإنشائه يجب أن تعمل.

نصائح أخرى

يجب أن تقوم القطعة التالية بتحديث الجدول الخاص بك في كل مرة تظهر طريقة العرض.

-(void)viewWillAppear:(BOOL)animated
{
    [[self tableView] reloadData];
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top