2013-03-28 5 views
0

У меня есть MainWindowViewController с соответствующими протоколами. У меня также есть методы dataSouce, реализованные в MainWindowViewController.Как получить UITableView во всплывающем окне Subview?

@interface MainWindowController : UIViewController < UITableViewDelegate, UITableViewDataSource, UAModalPanelDelegate, UIGestureRecognizerDelegate> 

У меня есть делегат и DataSource набор в viewDidLoad из MainWindowViewController.

self.friendsTableView.delegate = self; 
self.friendsTableView.dataSource = self; 

Что должно произойти, так это то, что я нажимаю кнопку друзей. Будет загружено имя файла xib FriendsPopUpView_iPhone, и он должен поднять UITableView друзей. Но таблица tablePopUpView отображается с пустыми строками. Что я делаю не так?

ДрузьяPopUpView_iPhone.xib содержит UITableView. friendsTableView - это выход из таблицы, созданной в FriendsPopUpView_iPhone.xib. friendsPopUpView - это UIView розетка для просмотра в FriendsPopUpView_iPhone.xib. Вот действие, связанное с кнопкой friend на главном MainWindowController.

- (IBAction)on_friends:(id)sender { 
    if (self.friendsPopUpView == nil) { 
     [[NSBundle mainBundle] loadNibNamed:@"FriendsPopUpView_iPhone" owner:self options:nil]; 
     [self.view addSubview:self.friendsPopUpView]; 

     UIButton* clickedButton = (UIButton*) sender; 
     CGRect sFrame = CGRectMake(clickedButton.frame.origin.x-100, clickedButton.frame.origin.y, 
            self.friendsPopUpView.frame.size.width, 
            self.friendsPopUpView.frame.size.height); 
     self.friendsPopUpView.frame = sFrame; 
    } 
} 

ответ

2

ли всплывающий вид заостренный наконечник содержит зацепил выходы к классу MainWindowViewController (как self.friendsPopUpView)? Это необходимо для того, чтобы что-нибудь могло работать.

Вы не можете установить делегат и источник данных перед представлением таблицы. Он не существует, когда запускается MainWindowViewController viewDidLoad. Чтобы настроить делегат и источник данных в коде, сделайте это после загрузки nib, как только таблица существует.

Если вы установили другие точки (например, friendsPopUp и friendsTableView) в качестве фишек (подключенных к владельцу файла, которые вы установили бы как MainWindowViewController), то вы можете установить делегат и источник данных таким же образом, no требуется код. В противном случае сделайте это в коде после того, как вы загрузите наконечник ...

- (IBAction)on_friends:(id)sender { 
    if (self.friendsPopUpView == nil) { 
    [[NSBundle mainBundle] loadNibNamed:@"FriendsPopUpView_iPhone" owner:self options:nil]; 

    // assuming you have a friendsPopUpView outlet setup in the nib 
    // also assuming you have a friendsTableView outlet setup in the nib, both of these connected 

    // now this will work 
    self.friendsTableView.delegate = self; 
    self.friendsTableView.dataSource = self; 
Смежные вопросы