Возможно ли получить окно .xib для раскадровки с вкладками - PullRequest
2 голосов
/ 23 февраля 2012

У меня нет длинного бина, который делает код, Xcode, так что я немного мусор, в основном я создал .xib и хотел бы, чтобы он был в раскадровке, но у меня действительно нет клея, с чего начать, потому что у меня есть окно xib, в котором есть UITableView и UIPickerView, и весь код в xib в порядке, но нужно ли мне добавлять код в раскадровку .h / .m и т. д., и возможно ли, если нет, как я могу сделать некоторые вид выпадающего меню для моего приложения. Вот код в xib

#import <UIKit/UIKit.h>

    @interface myview : UIViewController <UITableViewDelegate, UITableViewDataSource, UIPickerViewDelegate, UIPickerViewDataSource>    


    @property (strong, nonatomic) IBOutlet UITableView* tableView;
    @property (strong, nonatomic) IBOutlet UIPickerView* pickerView;
    @property (strong, nonatomic) NSMutableArray* tableData;
    @property (strong, nonatomic) NSMutableArray* pickerData;


    @end

Это .m, но я разобью его

    #import "myview.h"

    @implementation myview


    @synthesize tableView, pickerView, tableData, pickerData;





    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self) {
            // Custom initialization
        }
        return self;
    }

this is the -(void)viewDidLoad];etc..


    - (void)viewDidUnload
    {
        [super viewDidUnload];

        tableView.delegate = self;
        tableView.dataSource = self;
        pickerView.delegate = self;
        pickerView.dataSource = self;

        tableData = [[NSMutableArray alloc] init]; // table starts empty
        pickerData = [[NSMutableArray alloc] initWithObjects:@"1", @"2", @"3", @"4", @"5", nil]; // picker starts with values 1, 2, 3, 4, 5

        [tableView reloadData];
        [pickerView reloadAllComponents];    // Release any retained subviews of the main view.
        // e.g. self.myOutlet = nil;
    }

-(bool) 


        - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
        {
            // Return YES for supported orientations
            return (interfaceOrientation == UIInterfaceOrientationPortrait);
        }


        - (NSInteger)numberOfSectionsInTableView:(UITableView*)tableView {
            //The number of sections in UITableView
            return 1;

        }


        - (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section {
            // The number of rows in the UITableView
            return [tableData count];

        }


         - (UITableViewCell*)tableView:(UITableView*)tableView1 cellForRowAtIndexPath:(NSIndexPath *)indexPath {
                static NSString *cellIdentifier = @"cell";

           UITableViewCell *cell = [tableView1 dequeueReusableCellWithIdentifier:cellIdentifier];

                if (cell == nil) {
                    cell = [ [UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];

          }
    cell.textLabel.text = [tableData objectAtIndex:indexPath.row];

        return cell;

    }  


        - (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
            // Whatever happens when you select a table view row.
        }

        - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
        {
            // The number of sections in the UIPickerView
            return 1;
        }

        - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
        {
            // The number of rows in the UIPickerView
            return [pickerData count];
        }

        - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
        {
            // The data for each row in the UIPickerView
            return [pickerData objectAtIndex:row];
        }

        - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
        {
            // whatever you want to happen when a row is selected.

            // here I am assuming you want to remove from the picker and add to the table on selection
            [tableData addObject:[pickerData objectAtIndex:row]];
            [pickerData removeObjectAtIndex:row];

            [tableView reloadData];
            [self.pickerView reloadAllComponents];   
     }




        @end

Я надеюсь, что все это имело смысл, и я с нетерпением жду, чтобы услышать от вас

Большое спасибо за ваше время:)

1 Ответ

2 голосов
/ 23 февраля 2012

Нет выпадающего меню автоматического преобразования.Процесс выполняется вручную и описан ниже:

  1. Вырезать и вставлять из xib в новый контроллер представления раскадровки (откройте xib, выберите all и выберите copy, затем перейдите к раскадровке и вставьтеэто в пустой контроллер представления).
  2. Добавить новый подкласс контроллера представления (.m и .h) в проект.
  3. Вырежьте и вставьте пользовательский метод из старого подкласса контроллера представления в новый подкласс контроллера представления.Будьте осторожны, не переносите код, который загружает xib.
  4. Сначала свяжите новый подкласс настраиваемого контроллера представления с контроллером представления в раскадровке.
  5. Подключите все IBActions и IBOutlets, и вы должнывсе готово!
  6. При желании вы можете найти способы использовать сегменты вместо IBActions.
...