2012-03-27 1 views
2

У меня есть scrollview, в котором я создаю кнопки программно. При касании, кнопка должна загрузить другой наконечник. Проблема, на ощупь, я получаю [ViewController buttonTest]: непризнанные селектор направил к экземпляруUIButton не работает внутри UIScrollView

Позвольте мне вас через код:

appdelegate.h

@interface AppDelegate : UIResponder <UIApplicationDelegate> 
@property (strong, nonatomic) UIWindow *window; 
@property (strong, nonatomic) UINavigationController *viewController; 

appdelegate.m

#import "ViewController.h" 
@implementation AppDelegate 
@synthesize window = _window; 
@synthesize viewController = _viewController; 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

    ViewController *view = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 
    self.viewController = [[UINavigationController alloc] initWithRootViewController:view]; 
    self.window.rootViewController = self.viewController; 
    [application setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

Viewcontroller.h

@class newView; 

@interface ViewController : UIViewController{ 

    UIScrollView * scrollView; 
    IBOutlet UIButton *btn; 

} 

- (IBAction)butttonTest:(id)sender; 
    @property (strong, nonatomic) newView *secondView; 

и, наконец, ViewController.m

- (void)loadView { 

    CGRect fullScreenRect=[[UIScreen mainScreen] applicationFrame]; 
    scrollView=[[UIScrollView alloc] initWithFrame:fullScreenRect]; 
    scrollView.contentSize=CGSizeMake(320,960); 
    UIImageView *tempImageView2 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.jpeg"]]; 

    UIImage * buttonImage = [UIImage imageNamed:@"contentlist_active.png"]; 

    self.view=scrollView; 
    [scrollView addSubview:tempImageView2]; 
    scrollView.userInteractionEnabled = YES; 
    btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
    btn.frame = CGRectMake(22, 100, 277, 32); 
    [btn setBackgroundImage:buttonImage forState:UIControlStateNormal]; 
    [btn setTitle:@"hello world" forState:UIControlStateNormal]; 
    [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 

    [btn addTarget:self action:@selector(buttonTest:) forControlEvents:UIControlEventTouchUpInside]; 

    [scrollView addSubview:btn]; 

} 

Чтобы загрузить вид, у меня есть код:

[btn addTarget:self action:@selector(buttonTest) forControlEvents:UIControlEventTouchUpInside]; 

Что я делаю неправильно?

OH да, вот метод buttenPressed

- (IBAction)butttonTest:(id)sender { 
self.secondView = [[newView alloc] initWithNibName:@"newView" bundle:nil]; 

[self.navigationController pushViewController:self.secondView animated:YES]; 

} 

ответ

3

Ваш метод называется - (IBAction)butttonTest:(id)sender. Три t и параметр.

Но ваш селектор @selector(buttonTest). Два t и без параметров.

Эти два метода подписей просто не совпадают.

изменить addTarget:action:forControlEvents: вызов, как это:

[btn addTarget:self action:@selector(butttonTest:) forControlEvents:UIControlEventTouchUpInside]; 

или удалить третий т на обоих.

+0

Да, поймал, спасибо, много :) –

1

Вы реализовали buttonTest: метод (как я не вижу его в коде выше)?

+0

Я забыл упомянуть код здесь, я сделал .. tahnks :) –

1

Попробуйте это:

[btn addTarget:self action:@selector(buttonTest:) forControlEvents:UIControlEventTouchUpInside]; 

buttonTest: Примечание, а не buttonTest.

 Смежные вопросы

  • Нет связанных вопросов^_^