Две кнопки в двух разных видах, действующие как одна кнопка - PullRequest
1 голос
/ 12 августа 2011

Я работаю над проектом для iPhone iOS4 с Xcode 4.

Мое приложение использует tabBar для двух представлений с двумя контроллерами представления.

Я хочу программно создать кнопку в представлении и иметь такую ​​же кнопку в другом представлении.

Для «одной и той же кнопки» я имею в виду, что кнопки имеют одинаковое фоновое изображение, одинаковый заголовок и т. Д. Кроме того, когда я программно изменяю название первой кнопки, также и изменение названия второй кнопки; то же самое для фонов.

Я думал что-то вроде «передачи указателя», но я не знаю, как это сделать, как передать указатель из одного представления в другое представление. (У меня есть единственная GlobalData, если она может помочь.)

Спасибо.

Ответы [ 2 ]

2 голосов
/ 12 августа 2011

Что вы хотите сделать, это создать пользовательскую кнопку UIB, а затем просто использовать ее там, где вам это нужно. Как только вы измените его в файле реализации, он изменится глобально.

Пример CustomButton

//CustomButton.h

#import <UIKit/UIKit.h>

@interface CustomButton : UIButton{

}
@end


//CustomButton.m

#import "CustomButton.h"

@implementation CustomButton

- (id)init
{
    self = [super init];
    if (self) {
        self.type = UIButtonTypeCustom;
        self.frame = CGRectMake(170, 45, 150, 40);
        [self setTitle:@"Title" forState:UIControlStateNormal];
        [self.titleLabel setFont:[UIFont fontWithName:@"Helvetica-Bold" size:15]];
        [self setBackgroundImage:[UIImage imageNamed:@"bg_image.png"] forState:UIControlStateNormal];
    }

    return self;
}

@end

Тогда используйте это так:

#import "CustomButton.h"

...

CustomButton *myButton = [[CustomButton alloc] init];
0 голосов
/ 12 августа 2011

Хотя подход выглядит немного неясным, но я не знаю, каковы варианты использования, так что здесь все идет.

Вы можете создать подкласс UIButton и сделать его одиночным. Или сохраните это в AppDelegate.

Интересно отметить, что при добавлении того же объекта во второй вид он будет удален из первого вида! Поэтому вам придется продолжать добавлять его обратно в представление при вызове viewWontroller viewWillAppear: метод.

...