Создание общего вспомогательного файла UIToolbar и методов для Objective C - PullRequest
0 голосов
/ 30 сентября 2011

Я построил представление с UIToolbar, который отлично работает.

Эта панель инструментов будет отображаться прямо во всем приложении, и сейчас я копирую / вставляю код во множество различных файлов.

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

Я пытался поместитьследующий код в файл .h .m и наследование от UIView, но есть проблема, потому что есть ссылка на self.navigiationItem

Есть ли способ, которым я могу создать общий файл Objective C, который будетесть весь код и методы, которые я хочу использовать?

Спасибо.

- (void)viewDidLoad
   // ... 

    // appears in viewDidLoad
     // ---- TOOLBAR -----------//

        UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 100.0, 44.01f)];
        //[toolbar setBackgroundColor:[UIColor blackColor]];
        //[toolbar setTintColor:[UIColor redColor]];
        //[toolbar.layer setBorderColor:[[UIColor redColor] CGColor]];

        // Bar buttons

        UIBarButtonItem *barReloadBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(btnReload:)];

        [barReloadBtn setStyle:UIBarButtonItemStyleBordered];

        // Profile bar button
        UIImage *image = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"111-user" ofType:@"png"]];

        UIBarButtonItem *barProfileBtn = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStyleBordered target:self action:@selector(btnProfile:)];


        // Button array

        NSMutableArray *buttons = [[NSMutableArray alloc] init]; 

        [buttons addObject:barProfileBtn];
        [buttons addObject:barReloadBtn];


        [toolbar setItems:buttons];

        // Set nav items

        self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:toolbar];

        // memory cleanup
        [image release];
        [buttons release];
        [barReloadBtn release];
        [barProfileBtn release];    
        [toolbar release];


        // ---- /TOOLBAR -----------//
    }



    #pragma mark - IBActions

    -(IBAction) btnProfile:(id)sender
    {
        UserProfileVC *userProfileVC = [[UserProfileVC alloc] initWithNibName:@"UserProfileVC" bundle:[NSBundle mainBundle]];

        UINavigationController *tmpNavCon = [[UINavigationController alloc] initWithRootViewController:userProfileVC];

        [self.navigationController presentModalViewController:tmpNavCon animated:YES];

        [tmpNavCon release];
        [userProfileVC release];
    }

    -(IBAction) btnReload:(id)sender
    {
        NSLog(@"Not done yet");
    }

1 Ответ

0 голосов
/ 30 сентября 2011

navigationItem является свойством UIViewController, а не UIView. Если у вас есть такая общая функциональность, как я, я бы унаследовал от UIViewController, добавил вашу пользовательскую логику в viewDidLoad (или там, где это уместно), а затем унаследовал ваши контроллеры представления от этого класса. Просто убедитесь, что вы вызываете [super viewDidLoad] из реализаций ваших подклассов viewDidLoad.

...