Контроллер табличного представления и TextField внутри ModalView - PullRequest
1 голос
/ 15 января 2012

Я пытаюсь добавить tableView и TextField внутри ModalView. Я так и делаю. Я создаю новый View Controller и отдаю за него

#import <UIKit/UIKit.h>


@protocol UYLModalViewControllerDelegate

-(void) buttonDonePassed :(NSArray *) variables;

@end

@interface UYLModalViewController : UIViewController <UITableViewDelegate>
{ 

    id<UYLModalViewControllerDelegate> delegate;

    IBOutlet UITableView *tblView;
    IBOutlet UITextField *textField;

    NSMutableArray *cellsArray;
    //UITextField *textField;



}
@property (nonatomic, assign) id<UYLModalViewControllerDelegate>    delegate;
@property (nonatomic, retain) IBOutlet UITableView *tblView;
@property (retain, nonatomic) IBOutlet UITextField *textField;


@end

И IN .M файл я создаю функции

#pragma mark -
#pragma mark Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [cellsArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    cell.textLabel.text = [cellsArray objectAtIndex:indexPath.row];
    // Configure the cell.

    return cell;
}

и ViewDidiLoad

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(buttonPassed:)];

    //UITableView *tableView = [[UITableView alloc] init];
    //[self]
    cellsArray = [[NSMutableArray alloc] initWithObjects:@"one",@"two",@"three", nil];
    [tblView reloadData];
}

Но моя программа не использует методы TableViewDelegate (например, cellforrowAtIndexPath)

1 Ответ

1 голос
/ 15 января 2012

Вам необходимо установить UYLModalViewController как tableView delegate и datasource.


Похоже, вы используете Interface Builder, поэтому вам нужно:

  1. control + click на табличном представлении и перетащите его на File's Owner
  2. Затем выберите datasource в меню HUD.
  3. Затем повторите процесс, но выбрав delegate

Примечание
Ваш контроллер должен также соответствовать UITableViewDatasource, давая вам:

@interface UYLModalViewController : UIViewController <UITableViewDelegate, UITableViewDatasource>

1.

enter image description here

2.

enter image description here


Если вы предпочитаете, вы можете сделать это в коде viewDidLoad или в любом месте, где вы создаете tableView, если вы делаете это программно.

self.tableView.delegate   = self;
self.tableView.datasource = self;
...