iOS میں viewWillAppear: طریقہ کار کا جوہر اور اسے کیسے استعمال کریں

مصنف: IT Sectr اشاعت: 2026-03-05 مطالعے کا وقت: 8 منٹ

viewWillAppear ایک UIViewController طریقہ کار ہے جسے UIKit ہر بار کال کرتا ہے جب اسکرین صارف کے لیے نظر آنے سے پہلے۔ ایپل ڈویلپر دستاویزات کے مطابق، یہ طریقہ کار ایک بولین پیرامیٹر animated وصول کرتا ہے جو بتاتا ہے کہ آیا منتقلی اینی میشن کے ساتھ ہوتی ہے۔ viewWillAppear ڈیٹا کو اپ ڈیٹ کرنے اور اسکرین کی حالت کو ہم آہنگ کرنے کی بنیادی جگہ ہے۔

اہم نکات

  • viewWillAppear viewDidLoad کے برعکس، اسکرین کے ظاہر ہونے پر ہر بار کال کیا جاتا ہے
  • دوسری اسکرینوں سے واپس آنے کے بعد ڈیٹا اپ ڈیٹ اور ہم آہنگی کے لیے استعمال کیا جاتا ہے
  • animated پیرامیٹر بتاتا ہے کہ آیا ظاہری اینی میشن کے ساتھ ہے
  • یہاں NavigationBar، TabBar اور انٹرفیس کے دیگر عناصر ترتیب دیئے جاتے ہیں
  • عارضی اطلاعات کو سبسکرائب کرنے کے لیے موزوں ہے جو صرف نظر آنے والی اسکرین پر فعال ہوں

viewWillAppear کیا ہے

viewWillAppear ایک UIViewController طریقہ کار ہے جسے UIKit ونڈو کے درجہ بندی میں View شامل کرنے سے فوری پہلے کال کرتا ہے۔ اس مقام پر، View کے Auto Layout پاسز کے بعد حتمی طول و عرض ہوتے ہیں، لیکن یہ ابھی تک صارف کو نظر نہیں آتا — منتقلی اینی میشن یا تو شروع نہیں ہوئی ہے یا جاری ہے۔ ڈویلپر اس طریقہ کار کو اوور رائیڈ کرتا ہے تاکہ وہ کارروائیاں انجام دے سکے جو اسکرین کے ہر ڈسپلے سے پہلے ہونی چاہئیں۔

viewDidLoad کے برعکس جو صرف ایک بار متحرک ہوتا ہے، viewWillAppear ہر بار کال کیا جاتا ہے جب اسکرین ظاہر ہونے والی ہو: ابتدائی کھلنے پر، چائلڈ کنٹرولر سے واپسی پر، موڈل ونڈو بند کرنے کے بعد، اور TabBar ٹیبز تبدیل کرتے وقت۔ یہ اسے انٹرفیس کی حالت کو اپ ڈیٹ رکھنے کے لیے ایک اہم طریقہ کار بناتا ہے۔

یہ طریقہ کار Bool قسم کا ایک animated پیرامیٹر قبول کرتا ہے، جو true ہوتا ہے اگر اسکرین کی ظاہری اینی میشن کے ساتھ ہو۔ یہ پیرامیٹر NavigationBar اور TabBar طریقوں کو منتقل کرنے کے لیے آسان ہے، جن میں مستقل رویے کے لیے ایک جیسا پیرامیٹر ہوتا ہے۔

viewWillAppear کب کال کیا جاتا ہے

viewWillAppear کال کا وقت نیویگیشن کی قسم پر منحصر ہے، لیکن عام قاعدہ تبدیل نہیں ہوتا: طریقہ کار View کے نظر آنے سے پہلے متحرک ہوتا ہے۔ آئیے اہم منظرناموں پر غور کریں۔

پہلی اسکرین کھلنے پر

viewDidLoad کے بعد، UIKit ڈسپلے کی تیاری شروع کرتا ہے: View کو درجہ بندی میں شامل کیا جاتا ہے، layout پاسز متحرک ہوتے ہیں، اور منتقلی اینی میشن شروع ہونے سے فوری پہلے، viewWillAppear کال کیا جاتا ہے۔ اس لمحے، اسکرین ابھی تک نظر نہیں آتی، لیکن تمام subviews کے درست سائز ہوتے ہیں، اور ان کے مواد کو محفوظ طریقے سے اپ ڈیٹ کیا جا سکتا ہے۔

NavigationController سے واپسی پر

جب صارف بیک بٹن دباتا ہے یا پروگرام کے ذریعے popViewController کال کرتا ہے، UIKit پچھلی اسکرین پر واپس آتا ہے اور اس کا viewWillAppear کال کرتا ہے۔ یہ viewWillAppear استعمال کرنے کا بنیادی منظرنامہ ہے — آئٹم شامل کرنے کے بعد فہرست کو اپ ڈیٹ کرنا یا ترتیبات کو ہم آہنگ کرنا۔

swift
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    tableView.reloadData()
    updateBadgeCount()
}

موڈل ونڈو بند کرنے پر

موڈلی پیش کردہ کنٹرولر کو بند کرنے کے بعد، UIKit اس کنٹرولر پر viewWillAppear کال کرتا ہے جس نے اسے پیش کیا تھا۔ یہ منظرنامہ خاص توجہ کی ضرورت ہے اگر آپ ڈیٹا واپس بھیجنے کے لیے ڈیلیگیٹ یا بندش استعمال کرتے ہیں — viewWillAppear اس بات کو یقینی بناتا ہے کہ نتیجہ حاصل کرنے کے بعد اسکرین اپ ڈیٹ ہو۔

TabBar ٹیبز تبدیل کرتے وقت

TabBarController ہر تبدیلی پر منتخب ٹیب کے کنٹرولر پر viewWillAppear کال کرتا ہے۔ اگر ٹیب متحرک ڈیٹا دکھاتا ہے — شرح مبادلہ، اطلاعات، صارف کی حالت — viewWillAppear انہیں اپ ڈیٹ کرنے کے لیے مثالی جگہ ہے۔

viewWillAppear میں عملی کام

viewWillAppear کئی مخصوص کاموں کو حل کرتا ہے جو دوسرے طریقوں میں انجام دینا ناممکن یا غیر بہتر ہے۔ آئیے اہم کاموں پر نظر ڈالتے ہیں۔

ٹیبل ڈیٹا اپ ڈیٹ کرنا

viewWillAppear کا سب سے عام استعمال اسکرین کے ظاہر ہونے پر ہر بار UITableView یا UICollectionView کو دوبارہ لوڈ کرنا ہے۔ اگر پچھلی اسکرین پر ڈیٹا تبدیل ہوا ہو (آئٹم شامل کیا گیا، حالت تبدیل ہوئی)، viewWillAppear میں reloadData کال کرنا یقینی بناتا ہے کہ صارف تازہ ترین معلومات دیکھے۔

swift
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    viewModel.synchronize()
    tableView.reloadData()
}

NavigationBar اور TabBar ترتیب دینا

viewWillAppear میں NavigationBar کی ظاہری شکل ترتیب دینا آسان ہے: اسے چھپانا یا دکھانا، اس کا رنگ تبدیل کرنا، بڑا عنوان سیٹ کرنا۔ اگر مختلف اسکرینوں پر NavigationBar کے مختلف انداز ہیں، تو viewWillAppear ان تبدیلیوں کے لیے صحیح جگہ ہے، کیونکہ viewDidLoad صرف ایک بار کال ہوتا ہے۔

swift
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.setNavigationBarHidden(
        false, animated: animated
    )
    navigationController?.navigationBar.prefersLargeTitles = true
    tabBarController?.tabBar.isHidden = false
}

عارضی اطلاعات کو سبسکرائب کرنا

وہ اطلاعات جو صرف اسکرین کے نظر آنے پر معنی رکھتی ہیں — کی بورڈ اطلاعات، مواد کی تبدیلی کی اطلاعات — viewWillAppear میں سبسکرائب کی جاتی ہیں اور viewDidDisappear میں ان سبسکرائب کی جاتی ہیں۔ یہ اسکرین کے غیر فعال ہونے پر غیر ضروری ہینڈلرز کو روکتا ہے اور میموری لیک سے بچاتا ہے۔

UI حالت بحال کرنا

اگر اسکرین ایپ کے ذریعے چھپائی یا چھوٹی کی جا سکتی ہے، تو viewWillAppear UI حالت بحال کرنے کے لیے ایک آسان جگہ ہے: سیگمنٹ تبدیل کرنا، اسکرول پوزیشن بحال کرنا، عارضی تبدیلیاں ری سیٹ کرنا۔ صارف کو اسکرین ہر ظاہری پر پیش قیاسی حالت میں ملتی ہے۔

بیجز اور کاؤنٹرز اپ ڈیٹ کرنا

غیر پڑھے گئے پیغامات، درجہ بندیوں یا اطلاعات کے کاؤنٹر دکھانے والی اسکرینوں پر، viewWillAppear انہیں اپ ڈیٹ کرنے کے لیے صحیح جگہ ہے۔ اگر صارف نے کسی دوسری اسکرین پر مقدار تبدیل کی ہو، تو یہاں دوبارہ گنتی اور UITabBarItem.badgeValue یا حسب ضرورت اشارے کی اپ ڈیٹ کال کی جاتی ہے۔ یہ یقینی بناتا ہے کہ صارف ہمیشہ تازہ ترین اعداد دیکھے قطع نظر اس کے کہ وہ دوسری اسکرینوں پر کتنی دیر رہا۔

collectionView کے ساتھ کام کرتے وقت خصوصی توجہ دی جانی چاہیے: اگر اسکرین پر ڈیٹا کاؤنٹر یا حالتوں والے سیلز کے گرڈ کے طور پر پیش کیا جاتا ہے، تو viewWillAppear میں ان کی اپ ڈیٹ انتخابی ہونی چاہیے۔ مکمل reloadData کے بجائے، نظر آنے والے سیلز کے لیے reloadItemsAtIndexPaths استعمال کریں تاکہ جھلملاہٹ اور اسکرول پوزیشن کے نقصان سے بچا جا سکے۔

viewWillAppear اور viewDidLoad کے درمیان فرق

viewWillAppear اور viewDidLoad کے درمیان فرق کو سمجھنا مناسب UIViewController فن تعمیر کی بنیاد ہے۔ ان طریقوں کی کال فریکوئنسی، سیاق و سباق اور مقصد مختلف ہیں۔

viewDidLoad ایک بار کال کیا جاتا ہے اور اس ترتیب کے لیے موزوں ہے جو وقت کے ساتھ تبدیل نہیں ہوتی: سیل رجسٹر کرنا، ڈیلیگیٹ سیٹ کرنا، مستقل ابتدائیہ کرنا۔ viewWillAppear ہر ظاہری پر کال کیا جاتا ہے اور ان کارروائیوں کے لیے موزوں ہے جنہیں دہرانے کی ضرورت ہے: ڈیٹا اپ ڈیٹ کرنا، نظر آنے والے عناصر ترتیب دینا، حالت کو ہم آہنگ کرنا۔

خصوصیتviewDidLoadviewWillAppear
تعددایک بارہر ظاہری پر
View نظر آتا ہےنہیںنہیں (جلد ہی نظر آئے گا)
View کے طول و عرضحتمی نہیںحتمی
موزوں ہےایک بار کی ترتیباپ ڈیٹ اور ہم آہنگی
اینیمیشنلاگو نہیںanimated پیرامیٹر

سنہری اصول: اگر کوئی کارروائی صرف ایک بار انجام دینی چاہیے — اسے viewDidLoad میں رکھیں۔ اگر اسکرین پر واپسی پر ہر بار انجام دینی چاہیے — اسے viewWillAppear میں رکھیں۔

viewWillAppear میں عام غلطیاں

غلط استعمال viewWillAppear کے کارکردگی کے مسائل، ضرورت سے زیادہ اپ ڈیٹس اور متضاد انٹرفیس حالت کا سبب بن سکتا ہے۔ آئیے سب سے عام غلطیوں پر نظر ڈالتے ہیں۔

پہلی غلطی — viewDidLoad کی منطق کو نقل کرنا۔ اگر آپ viewDidLoad اور viewWillAppear دونوں میں ٹیبل سیل رجسٹر کرتے ہیں، تو رجسٹریشن کئی بار انجام پائے گی، جبکہ ایک بار کی ترتیب کافی ہے۔ تمام ایک بار کی ترتیبات کو viewDidLoad میں منتقل کریں۔

دوسری غلطی — ہر ظاہری پر غیر مشروط reloadData۔ اگر ڈیٹا تبدیل نہیں ہوا، تو ٹیبل کو دوبارہ لوڈ کرنا ڈیٹا سورس سے غیر ضروری سوالات اور سیل کی دوبارہ ڈرائنگ کا سبب بنتا ہے، کارکردگی کو کم کرتا ہے۔ reloadData کال کرنے سے پہلے چیک کریں کہ آیا حالت واقعی تبدیل ہوئی ہے۔

تیسری غلطی — درخواست مکمل ہونے سے پہلے اسکرین کے دوبارہ چھپنے کے امکان پر غور کیے بغیر نیٹ ورک کی درخواستوں کے ساتھ کام کرنا۔ اگر آپ viewWillAppear میں URLSession کی درخواست شروع کرتے ہیں اور صارف فوراً دوسری اسکرین پر چلا جاتا ہے، تو نتیجہ پہلے سے چھپی ہوئی View پر لگایا جا سکتا ہے۔ اپ ڈیٹ کرنے سے پہلے منسوخ ہونے والے کام استعمال کریں یا isViewLoaded اور window چیک کریں۔

چوتھی غلطی — super کال کرنا بھول جانا۔ super.viewWillAppear کو نہ کال کرنا والدین کنٹرولرز (UINavigationController, UITabBarController) کے رویے کو خراب کر سکتا ہے اور جیسچرز اور ٹرانزیشنز کی غلط ہینڈلنگ کا سبب بن سکتا ہے۔ super ہمیشہ کال کیا جانا چاہیے۔

پانچویں غلطی — layoutIfNeeded کو کال کیے بغیر رکاوٹیں تبدیل کرنا۔ اگر آپ viewWillAppear میں پروگرام کے ذریعے رکاوٹیں تبدیل کرتے ہیں، UIKit انہیں فوری طور پر لاگو نہیں کرتا — تبدیلیاں اگلے layout پاس تک جمع ہوتی ہیں۔ رکاوٹوں میں تبدیلی کے بعد تبدیلیوں کے فوری نفاذ کے لیے، view.layoutIfNeeded() کال کریں۔ یہ خاص طور پر مواد پر منحصر عناصر کی اونچائی کو ایڈجسٹ کرتے وقت اہم ہے۔

چھٹی غلطی — viewWillAppear میں اینی میشن انجام دینے کی کوشش۔ جیسا کہ اوپر ذکر کیا گیا، UIKit ابھی بھی منتقلی اینی میشن پر کارروائی کر رہا ہے، اور آپ کی اینی میشن سسٹم اینی میشن سے مقابلہ کر سکتی ہے۔ اگر آپ کو کسی عنصر کو اثر کے ساتھ ظاہر کرنے کی ضرورت ہے، تو viewDidAppear میں آنے والی اینی میشن استعمال کریں، اور viewWillAppear میں صرف ابتدائی حالت ترتیب دیں: شفافیت 0، پیمانہ 0.8 پر transform، وغیرہ۔

ساتویں غلطی — animated پیرامیٹر کو نظر انداز کرنا۔ کچھ ڈویلپر viewWillAppear میں animated کی قدر چیک نہیں کرتے اور ایسی کارروائیاں انجام دیتے ہیں جن کا انحصار اینی میشن کی موجودگی پر ہونا چاہیے۔ مثال کے طور پر، NavigationBar کو animated = false ہونے پر بغیر اینی میشن کے چھپایا جا سکتا ہے، اور animated = true ہونے پر — اینی میشن کے ساتھ، تاکہ ٹرانزیشن ہموار نظر آئے۔ animated پیرامیٹر کو ہمیشہ مناسب UIKit طریقوں میں منتقل کریں۔

آٹھویں غلطی — جب اسکرین نظر نہیں آتی تو انٹرفیس میں تبدیلی کرنا۔ اگر آپ viewWillAppear میں نیٹ ورک کی درخواست شروع کرتے ہیں اور اس کا تکمیل بلاک اس وقت انٹرفیس کو اپ ڈیٹ کرتا ہے جب اسکرین غائب ہو چکی ہو، صارف جھلملاہٹ یا متضاد حالت دیکھے گا۔ بندشوں میں انٹرفیس اپ ڈیٹ کرنے سے پہلے ہمیشہ isViewLoaded اور window چیک کریں۔ یہ سادہ اقدام کریشوں اور انٹرفیس کی غیر ضروری دوبارہ ڈرائنگ کو روکتا ہے۔

اکثر پوچھے گئے سوالات

viewWillAppear viewDidAppear سے کیسے مختلف ہے؟

viewWillAppear ظاہری اینی میشن شروع ہونے سے پہلے کال کیا جاتا ہے، جب View ابھی تک نظر نہیں آتا۔ viewDidAppear اینی میشن مکمل ہونے کے بعد کال کیا جاتا ہے، جب اسکرین مکمل طور پر ڈسپلے ہو اور تعامل کے لیے دستیاب ہو۔

کیا viewWillAppear کال نہیں ہو سکتا؟

عام حالات میں، جب اسکرین ظاہر ہوتی ہے تو viewWillAppear ہمیشہ کال ہوتا ہے۔ استثنا ایپ کا زبردستی بند کرنا ہے، جس میں UIKit کے پاس Lifecycle طریقوں کو کال کرنے کا وقت نہیں ہوتا۔

کیا super.viewWillAppear کال کرنا ضروری ہے؟

ہاں، یقینی طور پر۔ UIKit اس کال کو UINavigationController اور UITabBarController کے ساتھ اندرونی ہم آہنگی کے لیے استعمال کرتا ہے۔ super کے بغیر، جیسچرز اور ٹرانزیشن اینی میشنز خراب ہو سکتی ہیں۔

TabBarController میں viewWillAppear کتنی بار کال ہوتا ہے؟

ہر ٹیب تبدیلی پر۔ UIKit جیسے ہی صارف TabBar میں متعلقہ آئیکن کو چھوتا ہے، منتخب ٹیب کے کنٹرولر پر viewWillAppear کال کرتا ہے۔

viewWillAppear کے ذریعے ڈیٹا کیسے واپس بھیجا جائے؟

کنٹرولر کی خصوصیات یا مشترکہ ڈیٹا سورس استعمال کریں۔ popViewController کال کرنے سے پہلے، پچھلے کنٹرولر پر مطلوبہ اقدار سیٹ کریں، اور وہ اس کے viewWillAppear میں پہلے سے دستیاب ہوں گی۔

خلاصہ

  • viewWillAppear ایک بار کال ہونے والے viewDidLoad کے برعکس، اسکرین کے ہر ظاہری سے پہلے کال ہوتا ہے
  • ٹیبلز، کلیکشنز اور UI حالت کے ڈیٹا کو اپ ڈیٹ کرنے کے لیے استعمال ہوتا ہے
  • animated پیرامیٹر رویے کو اینی میشڈ اور غیر اینی میشڈ ٹرانزیشنز کے مطابق ڈھالنے دیتا ہے
  • NavigationBar، TabBar اور دیگر نیویگیشن عناصر viewWillAppear میں ترتیب دیئے جاتے ہیں
  • عارضی اطلاع سبسکرپشنز viewWillAppear کے لیے ایک درست استعمال ہے
  • viewDidLoad کی منطق کو نقل کرنے اور غیر مشروط reloadData سے پرہیز کریں
  • درست نیویگیشن رویے کے لیے ہمیشہ super.viewWillAppear کال کریں

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں