具有多个表视图的UISplitView

时间:2014-01-01 13:47:21

标签: ios uitableview xib

我在左侧有一个带有5个按钮的Tabbar的Splitview。 每个选项卡都有一个带有tableview的导航控制器。

一些前提:

  • App不是使用storyboard构建的
  • 我不明白Apple示例代码“MultipleDetailViews.xcodeproj”的架构

按钮5,头文件。

#import <UIKit/UIKit.h>
@class DetailViewiPad;

@interface TAB5 : UIViewController <UITableViewDataSource, UITableViewDelegate> 
{
    DetailViewiPad *detailViewController;
}

@property (nonatomic, strong) IBOutlet DetailViewiPad *detailViewController;

@end

按钮5,实现文件。

@implementation TAB5

@synthesize detailViewController;

[some code...]

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if ([key isEqualToString:@"A"]) {

        [detailViewController setDetailItem:[websites objectAtIndex:row]];  

    } else if ([key isEqualToString:@"B"]) {

        TableView2 *controller = [[TableView2 alloc] initWithNibName:@"TableView2" bundle:nil];

         [self.navigationController pushViewController:controller animated:YES];
    }

选项“A”完美工作,细节视图(右侧)显示其内容!

如果选择选项“B”(导航到TableView2),然后选择一行:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

        DetailViewiPad *detailViewController =
        [[DetailViewiPad alloc] initWithNibName:@"DetailViewiPad" bundle:nil];

         [detailViewController setDetailItem:[websites objectAtIndex:row]];            

详细信息视图无响应。如果您设置断点,您可以看到程序流进入详细信息视图并传递数据,但您无法在视图中看到更新(iPad设备)。

重复:程序流进入详细视图并传递数据但不刷新屏幕。

新类(TableView2.h,TableView2.m,TableView2.xib)与详细视图之间的连接似乎有些问题。某种代表问题。

1 个答案:

答案 0 :(得分:0)

我找到了!!!!

太棒了!!!

前提:我的详细信息视图称为DetailViewiPad

  • DetailViewiPad.h
  • DetailViewiPad.m
  • DetailViewiPad.xib

这是关键,神奇的代码:

DetailViewiPad *detailViewController  = (DetailViewiPad*)self.splitViewController.delegate;

[detailViewController setDetailItem:[websites objectAtIndex:row]];

这句话不正确:

DetailViewiPad *detailViewController = [[DetailViewiPad alloc] initWithNibName:@"DetailViewiPad" bundle:nil];

从子项目获取委托的关键表格视图到详细信息视图(在iPad Splitview中)是:

DetailViewiPad *detailViewController  = (DetailViewiPad*)self.splitViewController.delegate;