1

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
4

2 に答える 2

0

問題はこの行にあります

AnotherMadeUpViewController *vc3 = [[AnotherMadeUpViewController alloc] init];

に変更する必要があります

AnotherMadeUpViewController *vc3 = [[AnotherMadeUpViewController alloc] initWithNibName:@"AnotherMadeUpViewController" bundle:nil];

次に、.xib が読み込まれ、アウトレットが接続されます。

また、アウトレットを IB のファイルの所有者に接続することを忘れないでください。

于 2011-06-25T12:27:09.170 に答える
0

あなたの解剖viewDidLoad-</p>

scroller = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,self.view.frame.size.height)];

ここで新しいスクロール ビュー インスタンスを作成しているようですが、アウトレットとして宣言しています。コンセントがない場合は のIBOutletタグを外してscrollerください。持っていてそれを使用したい場合は、上記の行を削除してください。それを行うより短い方法は、

scroller = [[UIScrollView alloc] initWithFrame:self.view.bounds];

もう 1 つのことは、10 個のラベルを作成しているが、 frame を割り当てていないことです。それらの1つを別のページに表示するには、

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++;
}

後でcontentSizeを 10 ページを表示するように設定し、

scroller.contentSize = CGSizeMake(10 * self.view.frame.size.width, self.view.frame.size.height);    
于 2011-06-25T06:06:09.233 に答える