سؤال

انا املك UIViewController يتم تهيئة ذلك بإطار صحيح ، ولكن في مكان ما في الكود الخاص بي ، يتم تشويه الإطار وأواجه صعوبة في معرفة مكان.

في مثل هذه المواقف ، عادة ما يكون ذلك مفيدًا watch متغير في مصحح الأخطاء ، ومع ذلك ، ليس لدي أي طريقة للوصول إلى خاصية الإطار-> View-> في عرضي المتغير ، لأنه ليس متغيرًا ، إنه خاصية (بشكل مدهش بما فيه الكفاية)

يظهر الحفر في عرض Uiview في المتغيرات بعض الأشياء ولكن لا شيء يمكنني ربطه بالإطار ، ربما اعتقدت أن ذلك سيكون في layer لكنها ليست كذلك.

هل هناك أي طريقة لمراقبة التغييرات في واجهة برمجة التطبيقات الخاصة؟ لا أعتقد ذلك ، نظرًا لأن المتغيرات "مخفية" بشكل أساسي ، وبالتالي لا يمكنك تحديد ما بالضبط watch.

بدلاً من ذلك ، ما هو النهج الآخر الذي يمكنني استخدامه؟ لقد جربت بالفعل الفئة الفرعية Uiview ، حيث قمت بتعيين وجهة نظر UiviewController الخاصة بي للإشارة إلى هذه الفئة الفرعية وكسر طريقة setFrame ولكن لا يبدو أنها تعمل.

تحرير: لقد نجحت طريقة UIVIEW في الفئات الفرعية ، واضطررت فقط إلى ضبط العرض للإشارة إلى الفئة الفرعية الاختبار الخاصة بي viewDidLoad وليس init طريقة. ترك هذا السؤال مفتوحًا لأنني لست متأكدًا مما إذا كانت هذه هي أفضل طريقة للتعامل مع هذا النوع من المشكلة ...

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

المحلول 2

لقد اكتشفت أن هذا يمكن القيام به باستخدام مراقبي القيمة الرئيسية.

http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/KeyValueObserving/KeyValueObserving.html

نصائح أخرى

الفئة الفرعية الخاصة بك العرض الذي تريد تتبعه وإعادة كتابة طريقة setFrame:

@implementation MyTableView

- (void)setFrame:(CGRect)frame;
{
    NSLog(@"%@", frame);
    [super setFrame:frame];
}

@end

ثم استخدم مصحح الأخطاء لإضافة نقطة توقف إليه وتحقق من موعد استدعاؤه. في النهاية ، سترى متى يتم تغيير الإطار ومن أين يأتي التغيير.

يمكنك إنشاء ivar ، view2 ، وقام فقط بتعيينه في عرضك في الخاص بك loadView طريقة. من شأن ذلك أن يمكّنك من مشاهدته كمتغير عادي.

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