إضافة صورة خلفية لUITableViewController في القائمة على التطبيق الإنتقال

StackOverflow https://stackoverflow.com/questions/1813846

سؤال

ولدي التطبيق التنقل إلى حيث أنا أدفع UITableViewControllers إلى المكدس. وأود أن أضيف UImage خلفية كل من بلدي UITableViewControllers. ليس UIColor، ولكن UImage. أنا أعرف كيف يمكن القيام بذلك باستخدام ملف Nib ووضع UITableView نفسه أن يكون استخدام [UIColor ClearColor]، ولكن لا أريد أن تذهب من خلال كل ما عندي من UITableViewControllers وتغييرها إلى استخدام ملفات Nib، الخ.

ولقد وجدت أيضا <لأ href = "http://howtomakeiphoneapps.com/2009/03/how-to-add-a-nice-background-image-to-your-grouped-table-view/" يختلط = "نوفولو noreferrer"> هذا الحل حيث سيكون أمرا رائعا لو كنت فقط باستخدام tableviewcontroller احد في تطبيقي. أعتقد أنه قد يكون هناك طريقة لجعل هذا العمل، وذلك بإضافة subview "أدناه" وجهة نظري الجدول الذي يتم إنشاؤه بشكل افتراضي في UITableViewController؟

وأي اقتراحات ستكون كبيرة.

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

المحلول

ولكن الأمر يختلف قليلا في القائمة على التطبيق والملاحة: مجرد تغيير خلفية عرض الملاحة أن كل عرض جدول يجلس على. وضع التعليمة البرمجية التالية في viewDidLoad كل UITableViewController يعمل:

self.navigationController.view.backgroundColor = 
[UIColor colorWithPatternImage:[UIImage imageNamed:@"myImage.png"]];
self.tableView.backgroundColor = [UIColor clearColor];

ولكن قد تحتاج فقط إلى القيام بذلك مرة واحدة، على أعلى مستوى وحدة تحكم الملاحة، وليس في كل وحدة تحكم tableview (على الرغم من أنك سوف لا تزال بحاجة الى تعيين كل خلفية واضحة).

نصائح أخرى

في نظام التشغيل iOS6 استخدام هذا:

UIImageView *boxBackView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TextureBoxboard.jpg"]];
[self.tableView setBackgroundView:boxBackView];

إذا صفك وفئة فرعية UIViewController ثم يمكنك أن تفعل ذلك مثل هذا:

[self.view setBackgroundColor:
     [UIColor colorWithPatternImage:
      [UIImage imageWithContentsOfFile:
       [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:
        @"background.png"]]]];
UIImageView *backgroundView = 
  [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]];
backgroundView.frame = CGRectMake(0, 
                                  0, 
                               self.navigationController.view.frame.size.width, 
                               self.navigationController.view.frame.size.height);
backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth | 
                                  UIViewAutoresizingFlexibleHeight;
[self.navigationController.view insertSubview:backgroundView atIndex:0];
[backgroundView release];
self.tableView.backgroundColor = [UIColor clearColor];

وكما قال GORM

<اقتباس فقرة>   

وعليك سوى أن تفعل ذلك مرة واحدة، على أعلى مستوى من UINavigationController

والجواب نظرا بلدي Madhup هي الإجابة الصحيحة. UITableViewController هو فئة فرعية من UIViewController، لذلك مشيرا الى ان لطريقة viewDidLoad UITableViewController الخاص بك يعمل بشكل ممتاز.

واعتبارا من دائرة الرقابة الداخلية 3.2، - [UITableView setBackgroundView:] موجودا، والتي قد تكون أسهل من بعض الحلول المقترحة الأخرى للمضي قدما

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