2011-04-11 73 views
0

我有一個基於標籤的應用程序,我正在處理。將視圖加載到UIScrollView並讓內部的內容工作

我有一個名爲DetailsView.m的視圖控制器,它帶有一個名爲DetailsView.xib的伴隨nib文件。這裏有幾個UILabel,它們使用IBOutlet鏈接到DetailsView.m視圖控制器。當我使用標籤欄控制器加載此視圖控制器/視圖時,它工作正常,並且UILabels動態填充。

現在我想加載一個UIScrollView這裏面整個視圖,而不是讓我可以適應更多的內容。

所以我創造了另一個叫DetailsHolder.m一個名爲DetailsHolder.xib nib文件視圖控制器,並分配這個到標籤欄控制器。

我編寫了下面的代碼,將第一個視圖(DetailsView)加載到第二個視圖(DetailsHolder)的UIScrollView中。我寫在DetailsHolder的viewDidLoad方法:

DetailsView* detailsView = [[DetailsView alloc] initWithNibName:@"DetailsView" bundle: nil]; 
CGRect rect = detailsView.view.frame; 
CGSize size = rect.size; 
[scrollView addSubview: detailsView.view];  
scrollView.contentSize = CGSizeMake(320, size.height); 

這正確加載副視點進入UIScrollView的,但是,裏面的DetailsView標籤不再做任何事情。當我把一個NSLog放在DetailsView的viewDidLoad裏時 - 它從不記錄任何東西。就好像我已經加載了筆尖,但它不再與視圖控制器關聯。我在這裏錯過了什麼?我有點在OBJ C/iOS的新手的(但具有多年的ActionScript/JavaScript的知識提前

感謝,

豐富

編輯:根據要求DetailsView控件的內容:

DetailsView.h:

#import <UIKit/UIKit.h> 
#import "AppModel.h" 

@interface DetailsView : UIViewController { 
    IBOutlet UITextView* textView; 
    IBOutlet UIImageView* imageView; 
} 

@end 

DetailsView.m

#import "DetailsView.h" 

@implementation DetailsView 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)dealloc 
{ 
    [super dealloc]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 

#pragma mark - View lifecycle 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
} 

- (void)viewWillAppear:(BOOL)animated 
{ 
    AppModel* model = [AppModel sharedInstance]; 

    [model loadData]; 

    int selectedLocation = [model getSelectedLocation]; 
    NSArray *locations = [model getLocations]; 
    NSArray *data = [locations objectAtIndex:selectedLocation]; 

    textView.text = [data objectAtIndex: 0]; 


    UIImage *theImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[data objectAtIndex: 4] ofType:@"jpg"]]; 

    imageView.image = theImage; 

} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Return YES for supported orientations 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

@end 

基本上所有做的是從一個單抓selectedLocation(INT)(這是我的模型),然後抓住從模型數組,然後試圖插入一張圖片和一些文字到我的觀點。在我的筆尖文件中,我有一個UIImageView和一個UITextView,我已鏈接到在DetailsView.h中聲明的兩個IBOutlets。

回答

0

當您像這樣使用視圖控制器時,視圖控制器中將不會發生許多事件。 viewWillAppear,viewWillDisappear和設備旋轉事件。我最好猜測你在這些事件方法中做了一些初始化。過帳DetailsView的代碼可以更容易地找到問題。

+0

非常感謝Tia。我已編輯原始帖子,按要求包含詳細信息視圖的來源。 – Rich 2011-04-12 20:33:26

+0

現在很清楚你有'viewWillAppear'方法,它不會被執行。您可以在添加到滾動視圖之前直接調用它來解決它。 – tia 2011-04-13 03:53:32

相關問題