【问题标题】:UITableView Delegate Assignment EXC_BAD_ACCESSUITableView 委托分配 EXC_BAD_ACCESS
【发布时间】:2011-09-15 23:19:34
【问题描述】:

我的 iphone 程序有一个带有 tableview 的 Xib 视图。我将 UITableViewController 子类化,并试图让 xib 中的 UITableView 向它发送消息。当我触摸 tableview 行时程序崩溃。

它正确调用:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{}

并且正确分配了 cell.textLabel.text。

接口sn-p:

@interface PlayersDrawsViewController : UIViewController {
    UITableView *uitableView;
    PlayersToDrawTableViewController *pvc;
}
@property (nonatomic, retain) IBOutlet UITableView *uitableView;
@property (nonatomic, retain) IBOutlet PlayersToDrawTableViewController *pvc;

实现sn-p:

- (void)viewDidLoad
{
    // Setup TableView
    if (pvc == nil) {
        pvc = [[PlayersToDrawTableViewController alloc]
               initWithNibName:@"PlayersToDrawTableViewController" bundle:nil];
        /* works great, loads rows */
        self.uitableView.dataSource = pvc.tableView.dataSource;
        /* EXC_BAD_ACCESS when didSelectRowAtIndexPath is called */
        //self.tableView.delegate = pvc;

    }
}

我的 UITableViewController 子类:

@interface PlayersToDrawTableViewController : UITableViewController 
    <UITableViewDelegate>
    {
    }

    @end

如何让代理连接,以免发送消息时崩溃?

我已经阅读了这些主题,要么我很密集,要么他们没有回答我的问题:

UITableView issue when using separate delegate/dataSource

UITableView superClass for delegate?

Getting “EXC_BAD_ACCESS” when accessing instance variable from within UITableView delegate method

didSelectRowAtIndexPath generates EXC_BAD_ACCESS while willSelectRowAtIndexPath works fine UITableView

【问题讨论】:

  • 发布完整的错误消息可能会有所帮助。此外,将 UITableViewController 类型的实例变量作为 another 表的数据源看起来很可疑。
  • 除了堆栈转储外,没有错误消息。我在 didSelectRowAtIndexPath 方法中设置了一个断点,它到达了那里。但是,错误访问发生在:0x00fd009b mov 0x8(%edx),%edi
  • 另外,我正在使用 Interface Builder 来设计视图。我已将 UITableView 放入 UIView。 UITableViewController (pvc) 在 vi​​ewDidLoad 期间从 sqlite3 源获取数据。我愿意接受将 UITableView 填充为 UIView 组件的建议。
  • 如果您在didSelectRowAtIndexPath 中得到EXEC_BAD_ACCESS,您应该在此处添加该代码。
  • 什么都不做,只是 NSLog(@"%s", FUNCTION);

标签: iphone uitableview delegates


【解决方案1】:

如果此行因 EXC 崩溃..:

self.tableView.delegate = pvc;

...您是否在某处连接了 tableView 引用?在你的代码中 sn-p "no" - 但也许你在 NIB 中做了?

【讨论】:

  • 是的,在 NIB 中尝试过:Outlet:DataSource -> Players To Draw... Outlet:Delegate -> Players To Draw... 引用 Outlets:view -> Players To Draw...跨度>
  • 知道了。在 NIB 中,除了数据源和委托连接之外,我还需要将对象列表中的表视图控制器对象之间的连接拖动到文件所有者 (pvc) 连接中的引用出口。它已经连接好并且可以工作了。
猜你喜欢
  • 2015-11-18
  • 1970-01-01
  • 2012-03-12
  • 2023-04-11
  • 1970-01-01
  • 2014-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多