0

diffView という名前のナビゲーションベースのアプリケーションがあり、その中でボタンのクリックで新しいビューを開きたいと考えています。このために、next1 という名前の file-new file-cocoa touch class-UIViewControllerSubclass としてビューを作成しました。

diffViewAppDelegate.h に次のように書きました

IBOutlet UIButton *btn1;
@property (nonatomic,retain) UIButton *btn1;
-(IBAction)buttonPressed:(id)sender;

と diffViewAppDelegate.m-

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    CGRect bounds=window.bounds;
    UIView* view=[[UIView alloc]initWithFrame:bounds];
    [view setBackgroundColor:[UIColor redColor]];
    [window addSubview:view];

    CGRect buttonFrame= CGRectMake(80, 240, 200, 30);
    btn1=[[UIButton alloc] initWithFrame:buttonFrame];
    [btn1 setTitle:@"space" forState:UIControlStateNormal];
    [btn1.titleLabel setFont:[UIFont fontWithName:@"Verdana" size:20]];
    [btn1 addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchDown];
    [view addSubview:btn1];

    [self.window makeKeyAndVisible];

    return YES;
}

    -(IBAction)buttonPressed:(id)sender
{

    next1 * nxt=[[next1 alloc] initWithNibName:nil bundle:nil];
    [self.navigationController pushViewController:nxt animated:YES];
    [nxt release];
}

エラーは発生していませんが、ボタンをクリックしても何も起こりません。

解決策を教えてください。

4

2 に答える 2

0

はい、RootViewController でボタンを作成しましたが、機能していません。ボタンは現在表示されていません。私のコードはこのようなものです -

CGRect buttonFrame= CGRectMake(80, 240, 200, 30);
btn1=[[UIButton alloc] initWithFrame:buttonFrame];
[btn1 setTitle:@"space" forState:UIControlStateNormal];
[btn1.titleLabel setFont:[UIFont fontWithName:@"Verdana" size:20]];
[btn1 addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchDown];
[self.view addSubview:btn1];
于 2013-04-23T10:26:37.640 に答える
0

どのように私はそれを想像します:

  1. デリゲートで読み込みます-alloc / initしてUINaviagationControllerそのrootViewControllerプロパティを設定するかinitWithRootViewController:、NavigationControllerを初期化するときにメソッドを使用します。そんな感じ。

    viewController = [RootViewController alloc] init];
    nvc = [[UINavigationController alloc] initWithRootViewController:viewController];
    nvc.navigationBarHidden = YES;
    [self.window setRootViewController:nvc];
    [window makeKeyAndVisible];
    
  2. RootViewController で、「viewDidLoad:」メソッドからボタンを作成し、それを「self.view」に追加した後、ターゲット セレクターを実装すると、すべてがうまくいきます。

編集1:

それが私application:didFinishLaunchingWithOptions:のAppDelegateの私の方法です

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    self.viewController = [[[ViewController alloc] init] autorelease];

    self.navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController];

    self.window.rootViewController = self.navigationController;
    [self.window makeKeyAndVisible];
    return YES;
}

それが私のRootViewControllerです

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.


    CGRect buttonFrame= CGRectMake(80, 240, 200, 30);
    UIButton *btn1=[[UIButton alloc] initWithFrame:buttonFrame];
    btn1.backgroundColor = [UIColor greenColor];
    [btn1 setTitle:@"space" forState:UIControlStateNormal];
    [btn1.titleLabel setFont:[UIFont fontWithName:@"Verdana" size:20]];
    [btn1 addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn1];

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


- (void)buttonPressed:(id)sender
{
    NSLog(@"sender: %@", sender);
}

@end
于 2013-04-22T09:18:28.873 に答える