0

ファーストクラス

@implementation WatchViewController

- (void)viewDidLoad
{
    [super viewDidLoad];UIButton *watch1 = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
    watch1.frame = CGRectMake(5.0, 10.0, 140.0, 170.0);
    [watch1 setBackgroundImage:[UIImage imageNamed:@"Watch1.png"] forState: UIControlStateNormal];
    [watch1 addTarget:self action:@selector(WatchesPreviewButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
    [scr addSubview:watch1];

    UIButton *watch2 = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
    watch2.frame = CGRectMake(170.0, 10.0, 140.0, 170.0);
    [watch2 setBackgroundImage:[UIImage imageNamed:@"watch2.png"] forState: UIControlStateNormal];
    [watch2 addTarget:self action:@selector(WatchesPreviewButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
    [scr addSubview:watch2];
}

方法:

- (IBAction)WatchesPreviewButtonPressed:(id)sender {

    WatchPreviewViewController *watchesPreviewView = [[WatchPreviewViewController alloc] initWithNibName:@"WatchPreviewViewController"  bundle:nil];
    [self.navigationController pushViewController:watchesPreviewView animated:YES];
    [watchesPreviewView release];
}

セカンドクラス:

@implementation WatchPreviewViewController
- (void)viewDidLoad
{
    [super viewDidLoad];
UIScrollView *scr=[[UIScrollView alloc] initWithFrame:CGRectMake(0, 46, 320, 384)];
[self.view addSubview:scr];
NSArray* ds =[NSArray arrayWithObjects:
                      [NSArray arrayWithObjects:[self getPath:@"1a"],[self getPath:@"1b"],[self getPath:@"1c"],[self getPath:@"1d"],nil],
                      [NSArray arrayWithObjects:[self getPath:@"2a"],[self getPath:@"2b"],[self getPath:@"2c"],[self getPath:@"2d"],nil],nil];


 SSView* sv =[SSView createWithFrame:CGRectMake(0, 0, 320, 380) ds:ds];

    if(??????????????????)   //what condition is required for watch1?
{
        sv.curIndexPath =[NSIndexPath indexPathForRow:0 inSection:0];
        [scr addSubview:sv];
}
    else if(?????????????????)          //what condition is required watch2?
{
        sv.curIndexPath =[NSIndexPath indexPathForRow:1 inSection:0];
        [scr addSubview:sv];
}

クラス1では、時計の画像が2つあり、時計のクリックで次のページビューをロードしたいと思います。このために私はメソッドを使用していWatchesPreviewButtonPressedます。2番目のクラスでは、ボタンクリックでロードするためのページを作成しています。2番目のクラスでは、ビュー内にスクロールビューがあります。そして私は画像の配列を持っています。次のウォッチクリックイベントで別の画像を表示したい。誰もが私を喜ばせてください、私はiPhone開発の新人です。

4

2 に答える 2

1

WatchPreviewViewControllerで列挙型のようなスタイルを作成し、独自のinitメソッドを作成します。

typedef enum WatchPreviewViewControllerStyleType {
    WatchPreviewViewControllerStyleType1 = 0、
    WatchPreviewViewControllerStyleType2 = 1
    } WatchPreviewViewControllerStyleType;

@interface WatchPreviewViewController:UIViewController
{{
    WatchPreviewViewControllerStyleTypeスタイル;
}

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil andStyle:(WatchPreviewViewControllerStyleType)_style;

@実装


-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil andStyle:(WatchPreviewViewControllerStyleType)_style
{{
    self.style = _style;
}

-(void)viewDidLoad
{{
    [スーパーviewDidLoad];


    if(self.style == WatchPreviewViewControllerStyleType1)   
   {{

   }
    else if(self.style == WatchPreviewViewControllerStyleType2)
   {{
   }
}

このカスタム初期化では、コントローラーの作成中に送信されるivarスタイルを設定します。次に、viewDidloadでスタイルタイプを確認し、そのスタイルに必要なビューを追加します。

およびWatchViewControllerで

@implementation WatchViewController

-(void)viewDidLoad
{{
    [スーパーviewDidLoad];
  UIButton * watch1 = [[UIButton buttonWithType:UIButtonTypeCustom]保持];
   watch1.tag = 123;
    watch1.frame = CGRectMake(5.0、10.0、140.0、170.0);
    [watch1 setBackgroundImage:[UIImage imageNamed:@ "Watch1.png"] forState:UIControlStateNormal];
    [watch1 addTarget:self action:@selector(WatchesPreviewButtonPressed :) forControlEvents:UIControlEventTouchUpInside];
    [scr addSubview:watch1];

    UIButton * watch2 = [[UIButton buttonWithType:UIButtonTypeCustom]保持];
       watch1.tag = 456;
    watch2.frame = CGRectMake(170.0、10.0、140.0、170.0);
    [watch2 setBackgroundImage:[UIImage imageNamed:@ "watch2.png"] forState:UIControlStateNormal];
    [watch2 addTarget:self action:@selector(WatchesPreviewButtonPressed :) forControlEvents:UIControlEventTouchUpInside];
    [scr addSubview:watch2];
}

-(IBAction)WatchesPreviewButtonPressed:(id)sender {

if(sender.tag == 123)
{{
   WatchPreviewViewController * watchesPreviewView = [[WatchPreviewViewController alloc] initWithNibName:@ "WatchPreviewViewController" bundle:nil andStyle:WatchPreviewViewControllerStyleType1];
    [self.navigationController pushViewController:watchesPreviewViewアニメーション:YES];
    [watchesPreviewViewリリース];
}
そうしないと
{{
   WatchPreviewViewController * watchesPreviewView = [[WatchPreviewViewController alloc] initWithNibName:@ "WatchPreviewViewController" bundle:nil andStyle:WatchPreviewViewControllerStyleType2];
    [self.navigationController pushViewController:watchesPreviewViewアニメーション:YES];
    [watchesPreviewViewリリース];
}

}

于 2013-01-15T12:22:00.800 に答える
1

でボタンを作成するときに、各ボタンにタグプロパティを設定します(void)viewDidLoad

watch1.tag = 1    //new code
[scr addSubview:watch1];  //existing code


watch2.tag = 2  //new code
[scr addSubview:watch2];  //existing code

WatchPreviewViewController.hで、@interfaceセクションにプロパティを作成します。

@property (assign) int watchType;

次に、- (IBAction)WatchesPreviewButtonPressed:(id)senderどのボタンが押されたかに応じてプロパティを設定します。

watchesPreviewView.watchType = sender.tag

(送信者を型キャストする必要があるかもしれません:(UIView*)sender.tag、私はこれをライブでテストしていません)

今あなたのif(??????????????????)テストはif (self.watchType == 1)

于 2013-01-15T12:31:01.607 に答える