如何从xib(UITableViewCell)加载xib视图(UIViewController)

时间:2012-05-22 20:55:26

标签: uitableview uiviewcontroller xib navigationcontroller awakefromnib

这是我已经拥有的;

  • 我从XIB文件(UITableViewCell)
  • 加载了一个Custom单元格
  • 此自定义单元格包含按钮A和B
  • 创建了一个IBAction来处理Button A
  • 加载到MyTableView类(UIViewController)中的XIB文件上面

现在我想加载另一个视图(很可能是一个XIB文件)在Button A点击事件上,在IBAction函数中我试过了这个;

    // Where MyTableView is a class which loads this custom cell
    // ModalView is a name of XIB File
    MyTableView *vc = [[MyTableView alloc] initWithNibName:@"ModalView" bundle:nil];
    [self.navigationController pushViewController:vc animated:YES];

但它在“self.navigationController”中通过错误,说明在类型为MyTableViewCell类的对象上找不到Property navigationController,我知道这是由于UITableViewCell类而发生的,并且此行中的self指的是UIViewController对象和我应该使用awakeFromNib或类似的东西,但我找不到任何足够的例子来让我实现我所需要的。

1 个答案:

答案 0 :(得分:1)

好吧,我已经解决了我的问题;

在cellForRowAtIndexPath函数中,我提取XIB文件(UITableViewCell)来表示自定义设计的单元格,我创建了一个按钮并从XIB视图中为其指定了按钮,然后将IBAction附加到该按钮;

    // SimpleTableCell is the XIB filename (UITableViewCell)
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleTableCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];


    UIButton *btn = [[UIButton alloc] init];
    btn = cell.btn;
    [btn addTarget:self action:@selector(smsBtnClicked:) 
                            forControlEvents:UIControlEventTouchUpInside];