问题描述
|
使用基于Windows的模板时,我需要记住一些东西吗?因为我不清楚为什么显示选项卡,但视图中什么都没有显示。
你能帮忙吗?因为我已经搜索了几个小时的以前的问题,但是我仍然没有找到任何可以解决此问题的方法。
AnotherMadeUpAppDelegate.h
#import <UIKit/UIKit.h>
#import \"AnotherMadeUpViewController.h\"
@interface AnotherMadeUpAppDelegate : NSObject <UIApplicationDelegate> {
}
@property (nonatomic,retain) IBOutlet UIWindow *window;
@end
AnotherMadeUpAppDelegate.m
#import \"AnotherMadeUpAppDelegate.h\"
@implementation AnotherMadeUpAppDelegate
@synthesize window=_window;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
UIViewController *vc1 = [[UIViewController alloc] init];
UIViewController *vc2 = [[UIViewController alloc] init];
AnotherMadeUpViewController *vc3 = [[AnotherMadeUpViewController alloc] init];
UITabBarController *tbc = [[UITabBarController alloc] init];
tbc.viewControllers = [NSArray arrayWithObjects:vc1,vc2,vc3,nil];
[vc1 release];
[vc2 release];
[vc3 release];
[self.window addSubview:tbc.view];
[self.window makeKeyAndVisible];
return YES;
}
...
@end
AnotherMadeUpViewController.h
#import <UIKit/UIKit.h>
@interface AnotherMadeUpViewController : UIViewController<uiscrollviewdelegate>
{
IBOutlet UIPageControl *pageControl;
IBOutlet UIScrollView *scroller;
IBOutlet UILabel *label;
}
@property (nonatomic,retain)IBOutlet UIPageControl *pageControl;
@property (nonatomic,retain)IBOutlet UIScrollView *scroller;
@property (nonatomic,retain)IBOutlet UILabel *label;
-(IBAction)clickPageControl:(id)sender;
@end
AnotherMadeUpViewController.m
#import \"AnotherMadeUpViewController.h\"
@implementation AnotherMadeUpViewController
@synthesize pageControl,scroller,label;
-(IBAction)clickPageControl:(id)sender
{
int page=pageControl.currentPage;
CGRect frame=scroller.frame;
frame.origin.x = frame.size.width * page;
frame.origin.y = 0;
[scroller scrollRectToVisible:frame animated:YES];
}
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
int page = scrollView.contentOffset.x/scrollView.frame.size.width;
pageControl.currentPage=page;
}
- (id)initWithNibName:(Nsstring *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)dealloc
{
[super dealloc];
[label release];
}
- (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];
scroller.pagingEnabled=YES;
CGFloat labelOriginX = label.frame.origin.x;
CGFloat labelOriginY = label.frame.origin.y;
CGFloat scrollWidth = 0;
int pageNumber = 0;
for (int i=0; i<9; i++)
{
CGRect rect = label.frame;
rect.size.height = label.frame.size.height;
rect.size.width = label.frame.size.width;
rect.origin.x = labelOriginX + scrollWidth;
rect.origin.y = labelOriginY;
label.frame = rect;
label.text = [Nsstring stringWithFormat:@\"%d\",pageNumber];
label.textColor = [UIColor redColor];
[scroller addSubview:label];
pageNumber++;
scrollWidth += scroller.frame.size.width;
}
scroller.delegate=self;
scroller.directionalLockEnabled=YES;
scroller.showsHorizontalScrollIndicator=NO;
scroller.showsverticalScrollIndicator=NO;
pageControl.numberOfPages=9;
pageControl.currentPage=0;
scroller.contentSize=CGSizeMake(pageControl.numberOfPages*self.view.frame.size.width,self.view.frame.size.height);
[self.view addSubview:scroller];
}
- (void)viewDidUnload
{
[super viewDidUnload];
[label release];
self.label = nil;
// 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
解决方法
剖析
viewDidLoad
–
scroller = [[UIScrollView alloc] initWithFrame:CGRectMake(0,self.view.frame.size.width,self.view.frame.size.height)];
您似乎在此处创建一个新的滚动视图实例,但已将其声明为出口。如果您没有插座,请卸下IBOutlet
的IBOutlet
标签。如果您确实有一个想要使用它,则删除上面的行。一种更简单的方法是
scroller = [[UIScrollView alloc] initWithFrame:self.view.bounds];
另一件事是您要创建10个标签,但不分配框架。要在不同页面中分别显示其中之一,
int pageNumber = 0;
for (int i = 0; i < 10; i++)
{
UILabel *label = [[UILabel alloc] init];
[label sizeToFit];
label.center = CGPointMake (((2 * i + 1) * self.view.frame.size.width) / 2,self.view.frame.size.height / 2);
label.text = [NSString stringWithFormat:@\"%d\",pageNumber];
[scroller addSubview:label];
[label release];
pageNumber++;
}
然后将ѭ10设置为显示10页,
scroller.contentSize = CGSizeMake(10 * self.view.frame.size.width,self.view.frame.size.height);
, 问题是这条线
AnotherMadeUpViewController *vc3 = [[AnotherMadeUpViewController alloc] init];
您需要将其更改为
AnotherMadeUpViewController *vc3 = [[AnotherMadeUpViewController alloc] initWithNibName:@\"AnotherMadeUpViewController\" bundle:nil];
然后,您的.xib将加载并连接您的插座。
并且不要忘记将您的网点连接到IB中File \的所有者。