2013-01-20 94 views
1

我想讓UIButton顯示一個圖像,並且正在獲取標題錯誤。在'BSViewController *'類型的對象上找不到屬性「窗口」

另外我想知道爲什麼()需要BSViewController(),因爲它是由XCode創建的?

// 
// BSViewController.m 

#import "BSViewController.h" 

@interface BSViewController() // Why the "()"? 
@end 

@implementation BSViewController 


- (IBAction) chooseImage:(id) sender{ 


    UIImageView* testCard = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ipad 7D.JPG"]]; 
//Property 'window' not found on object of type 'BSViewController *' 
    self.window.rootViewController = testCard; 
    [self.window.rootViewController addSubview: testCard]; 
    testCard.center = self.window.rootViewController.center; 

    NSLog(@"chooseImage"); 

} 


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

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

@end 



// 
// BSViewController.h 

#import <UIKit/UIKit.h> 

@class BSViewController; 
@interface BSViewController : UIViewController 
<UIImagePickerControllerDelegate, UINavigationControllerDelegate>{ 
    IBOutlet UIButton* chooseImage; 
} 


- (IBAction) chooseImage:(id) sender; 

@end 
+0

當我進入這個'@財產(非原子,保留)的UIWindow *窗口;'我得到的錯誤'不兼容的指針類型從的UIImageView分配到的UIViewController * __strong '。 – zerowords

回答

10

這條線:

self.window.rootViewController = testCard; 

是一個ImageView的對象指針分配給現有的viewController對象指針的嘗試。你應該得到一個編譯器的警告。然後在下一行中,您有效地嘗試將其作爲子視圖添加到自身,這可能會引發警告。

該()表示類別擴展到一個類。它是您的公共接口的擴展,它允許您聲明應該對該類是私有的實體。你應該把你的大部分界面放在這裏,只要把你的界面放在需要公開的界面中即可。

您的BSViewController類沒有名爲window的屬性,因此您不能將其稱爲self.window。但在正常情況下,你應該能夠得到這樣你的窗口的引用:

UIWindow* window = [[UIApplication sharedApplication] keyWindow]; 
    [window.rootViewController.view addSubview: testCard]; 

不過,如果你只想把testCard到您BSViewController的情況下,你不需要做。你只需要你當前實例的觀點的引用:

[self.view addSubview:testCard]; 
+0

看起來我想知道「爲什麼我會得到這個結果」,但我也需要知道如何解決它。 – zerowords

+0

首先刪除我提到的那一行...然後 - 您是否打算將圖像添加爲您的BSViewController實例或另一個控制器的子視圖?控制器之間的關係是什麼? – foundry

+0

現在我想讓圖像在同一個viewController中。最終我想用UIImagePickerController來拍照,以便我可以識別52張卡片中的每張卡片。 – zerowords

相關問題