我有一個基於標籤的應用程序,我正在處理。將視圖加載到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。
非常感謝Tia。我已編輯原始帖子,按要求包含詳細信息視圖的來源。 – Rich 2011-04-12 20:33:26
現在很清楚你有'viewWillAppear'方法,它不會被執行。您可以在添加到滾動視圖之前直接調用它來解決它。 – tia 2011-04-13 03:53:32