2010-09-22 2 views
0

У меня есть контроллер просмотра, который меняет объекты UIView. Существует потенциал иметь сотни разных взглядов, каждый со своим поведением.Нужно ли создавать переменные и связывать IBOutlet для каждого UIVIew?

В моем текущем файле MainWindow.xib я в настоящее время:

File's Owner  UIApplication 
First Responder UIResponder 
AppDelegate  AppDelegate 
    -Cover   Cover 
Window   UIWindow 
Table of Contents TableOfContents 
page1   Page1 
page2   Page2 
page...n   Page...n 

AppDelegate объявляет окно и ViewController. Это довольно просто.

MainViewController.h

#import <UIKit/UIKit.h> 


@class TableOfContents, Page1; 

@interface MainViewController : UIViewController { 

    TableOfContents *tableOfContents; 
    Page1 *page1; 
    Page2 *page2; 
    Page...n *page...n; 
} 

@property (nonatomic, retain) IBOutlet TableOfContents *tableOfContents; 
@property (nonatomic, retain) IBOutlet Page1    *page1; 
@property (nonatomic, retain) IBOutlet Page2    *page2; 
@property (nonatomic, retain) IBOutlet Page...n   *page...n; 

-(IBAction)funcGoToPage:(id)sender; 

@end 

MainViewController.m

#import "MainViewController.h" 
#import "TableOfContents.h" 
#import "Cover.h" 
#import "Page1.h" 
#import "Page2.h" 
#import "Page...n.h" 

@implementation MainViewController 

@synthesize page1, page2, page...n tableOfContents; 
@synthesize pageID, pagesPathFile, pagesPath; 


-(IBAction)funcGoToPage:(id)sender{ 

    //[[self view] removeFromSuperview]; 
    [self.view addSubview:self.tableOfContents]; 
} 

Соответствующие классы UIView довольно голые на данный момент, поэтому я воздержусь от их размещения.

Прямо сейчас funcGoToPage просто воспитывает tableOfContents. В конце концов, я пойду в разные места в зависимости от того, что было нажато.

В настоящее время каждая страница настроена как IBOutlet и связана с MainViewController с соответствующим UIView в Interface Builder. Таким образом, каждая страница должна быть настроена как переменная и связана с IB, создавая hubub переменных, точек и соединений.

Мой вопрос: есть ли способ создать эти соединения «на лету», чтобы я мог поменять их на использование моей функции funcGoToPage без их настройки как IBOutlet?

ответ

4

При загрузке ниба загружается все его содержимое. Если у вас много просмотров в одном наконечнике, вы быстро исчерпаете память.

Я бы поместил каждую страницу в отдельный наконечник, а затем, при необходимости, загрузил наконечник: [[NSBundle mainBundle] loadNibNamed: @ "nibNameWithoutExtension" владелец: self options: nil];

Для этой работы:

  • добавьте IBOutlet, например newPage, к тому, что self относится к
  • установить владелец файла в nibNameWithoutExtension к любому self относится к
  • присоединиться мнение в nibNameWithoutExtension к newPage выход Владелец файла
+0

Когда загружен наконечник, он также загружает все изображения и объекты, на которые ссылаются в разных UIViews? Как если бы каждый вид содержал высококачественное изображение, все эти изображения, но загружались в память сразу? – emachine

+0

Да, все, что ссылается на ссылки, загружается при создании экземпляра. –

+0

Интересно, я принимаю ваши советы и переключается на отдельные наконечники. Спасибо. – emachine

Смежные вопросы