1

有一个AppDelegate和一个MainViewController。在创建时,MainViewController设置背景图像并应将其显示在. 差不多就是这样,但我看不到。UIButtonAppDelegateMainViewControllerUIButton

仅出于对齐目的,我在 IB 中创建IBOutlet并连接了按钮。

主视图控制器.h

@property (strong, nonatomic) IBOutlet UIButton *searchBtn;

主视图控制器.m

@synthesize searchBtn;

AppDelegate.m

@synthesize mainVC;


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // ViewController > setup:
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.mainVC = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
    self.window.rootViewController = self.mainVC;
    self.window.backgroundColor = [UIColor whiteColor];

    // Buttons > Set background images:
    [self.mainVC.searchBtn setImage:[UIImage imageNamed:@"search.png"] forState:UIControlStateNormal];

    [self.mainVC.view addSubview:self.mainVC.searchBtn];

    [self.window makeKeyAndVisible];

    return YES;
}
4

2 回答 2

6

IBOutlet首先,如果您以编程方式创建它,则不需要。

其次,您可能希望将按钮的创建移到viewDidLoad视图控制器而不是AppDelegate. 这是您的视图控制器的业务。

alloc init第三,如果您以编程方式创建它,您可能应该使用您的按钮:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(...)];
[button setBackgroundImage:someImage];
[button addTarget:self action:@selector(something:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];

类似的东西。

于 2012-08-07T17:18:59.553 回答
1

您应该首先在 MainViewController 类中添加按钮,而不是 AppDelegate。

您还应该在 MainViewController 中设置视图的背景,而不是 AppDelegate。

它应该如下所示:

AppDelegate.m

@synthesize mainVC;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // ViewController > setup:
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.mainVC = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
    self.window.rootViewController = self.mainVC;

    [self.window makeKeyAndVisible];

    return YES;
}

在你的 MainViewController.m 的 viewDidLoad 中放这个

- (void)viewDidLoad {
    [super viewDidLoad];
    // Buttons > Set background images:
    [searchBtn setBackgroundImage:[UIImage imageNamed:@"search.png"] forState:UIControlStateNormal];

    //If you adding the button in Interface Builder you don't need to add it again
    //[self.view addSubview:self.mainVC.searchBtn];
}
于 2012-08-07T17:19:32.170 回答