0

我有一个带有适当协议的 MainWindowViewController。我还在 MainWindowViewController 中实现了 dataSouce 方法。

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

我在viewDidLoadMainWindowViewController 中设置了委托和数据源。

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

应该发生的是我按下了朋友按钮。加载了一个名为 FriendsPopUpView_iPhone 的 xib 文件,它应该会显示一个UITableView朋友。但是friendsPopUpView 的tableview 显示为空行。我究竟做错了什么?

FriendsPopUpView_iPhone.xib 包含一个UITableView. FriendsTableView 是 FriendsPopUpView_iPhone.xib 中创建的 tableview 的一个出口。FriendsPopUpView 是 FriendsPopUpView_iPhone.xibUIView中视图的出口。这是连接到主 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;
    }
}
4

1 回答 1

2

弹出视图笔尖是否包含连接到 MainWindowViewController 类的插座(如 self.friendsPopUpView)?它必须为了使任何事情起作用。

在表视图存在之前,您不能设置委托和数据源。当 MainWindowViewController viewDidLoad 触发时它不存在。要在代码中设置委托和数据源,请在加载 nib 后执行,一旦表存在。

如果您将其他插座(如 friendsPopUp 和 friendsTableView)设置为 nib 插座(连接到您将设置为 MainWindowViewController 的“文件所有者”),那么您可以以相同的方式设置委托和数据源,无需代码。否则,请在加载笔尖后在代码中执行...

- (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;
于 2013-03-28T02:16:53.023 回答