1

やあ。アプリを開発しており、アプリ自体に背景を設定したいと考えています。for ループと設定タグを使用してボタンの配列を作成しましたが、何らかの理由でボタンをクリックしても何も起こりません。

これは、ボタンが作成される場所です。

-(void)showSettings {
  [[objc_getClass("DreamBoard") sharedInstance] hideAllExcept:mainView];
  [UIView beginAnimations:nil context:nil];
  [UIView setAnimationDuration:.5];

  if(toggled){
    photos = [[NSArray arrayWithObjects:   
                [UIImage imageWithContentsOfFile:@"/var/mobile/Library/iZoon/Images/Wallpapers/Wallpaper1.png"],
                [UIImage imageWithContentsOfFile:@"/var/mobile/Library/iZoon/Images/Wallpapers/Wallpaper2.png"],
                [UIImage imageWithContentsOfFile:@"/var/mobile/Library/iZoon/Images/Wallpapers/Wallpaper3.png"],
                [UIImage imageWithContentsOfFile:@"/var/mobile/Library/iZoon/Images/Wallpapers/Wallpaper4.png"],
                 nil] retain];

    w=0;
    for ( UIImage *image in photos )
    {                          
        for (l = 0; l<(int)photos.count; l++) 
        {
            wallpaperButton = [[UIButton alloc] initWithFrame:CGRectMake(5,130+150*w,150,150)];

            wallpaperButton.tag = l;

            [wallpaperButton setImage:image forState:UIControlStateNormal];

            [wallpaperButton addTarget:self action:@selector(setWallpaper) forControlEvents:UIControlEventTouchDown];

            [settingsMenu addSubview: wallpaperButton];
            [wallpaperButton release];

        }

        w++;
    }

壁紙を設定する関数は次のとおりです。

-(void)setWallpaper {

UIImageView *bgView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,320,480)];

if ([wallpaperButton tag] == 1) {
  bgView.image = [UIImage imageWithContentsOfFile:@"/var/mobile/Library/iZoon/Images/Wallpapers/Wallpaper1.png"];
}
else if ([wallpaperButton tag] == 0) {
  bgView.image = [UIImage imageWithContentsOfFile:@"/var/mobile/Library/iZoon/Wallpapers/Wallpaper2.png"];   
}
else if ([wallpaperButton tag] == 2) {
  bgView.image = [UIImage imageWithContentsOfFile:@"/var/mobile/Library/iZoon/    Wallpapers/Wallpaper3.png"];  
}
else if ([wallpaperButton tag] == 3) {
  bgView.image = [UIImage imageWithContentsOfFile:@"/var/mobile/Library/iZoon/Wallpapers/Wallpaper4.png"]; 
}

[mainView insertSubview:bgView atIndex:0];
[bgView release];  

}

ボタンは正しく表示されるようになりましたが、何もしません。どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

2

NSLog ステートメントを追加して、setWallpaper メソッドが呼び出されているかどうかを確認します。もしそうなら、これは修正かもしれないと思います:

画像を XCode プロジェクトに追加するだけなら、名前で取得できます。画像をプロジェクトにドラッグするときは、[必要に応じてファイルをプロジェクト フォルダーにコピーする] チェックボックスをオンにしてください。次に、これを行うだけで画像を取得できます。

if ([wallpaperButton tag] == 1) {
    bgView.image = [UIImage imageNamed:@"Wallpaper1.png"];
}
.
.
.
[self.view addSubview:bgView];

また、アプリがステータス バー (バッテリーと時計を含むバー) を隠していない限り、画像の高さは実際には 460 にする必要があることに注意してください。

于 2012-07-11T17:47:42.410 に答える