iPhone应用程序开发 - UITableView DetailsView

时间:2010-05-05 18:11:11

标签: iphone uitableview

我有一个UITableView,其中包含item1,item2,item3,item4等项目列表。

如果我选择item1,它将转到item1的详细视图(由DetailsViewController控制)。

我要做的是在DetailsView上添加一个名为“Next”的按钮。单击时,DetailsView将刷新并显示item2。再次单击时,它将显示item3,依此类推。

我一直在寻找实现的高低。但无济于事。

非常感谢提前!!!

1 个答案:

答案 0 :(得分:2)

我会使表视图控制器成为详细信息视图控制器的委托。然后在详细信息视图控制器中执行以下操作:

-(IBAction) nextButtonClicked:(id)inSender {
  NSDictionary *data = [delegate detailView:self nextDetailsForCurrent:myDetails];
  if ( data ) [self setDetails:data];
}

你可以制作一个比这个过于简单的方法更强大的委托协议,但希望这会让你开始。

编辑:

委托没有任何固有的特殊之处。它只是一个对象,代表另一个对象做出决策。在Objective-C中,委托通常被定义为协议,尽管它曾经只是NSObject的一个类别。

创建一个这样的委托协议:

@protocol DetailDelegate <NSObject>
  -(NSDictionary *) detailController:(DetailController *)sender nextDetailsForCurrent:(NSDictionary *)current;
@end

为详细视图控制器提供如下属性:

@property (nonatomic,assign) id<DetailDelegate> delegate;

请注意assign而不是retain。按照惯例,代理人不会被保留,即使它必须在另一个对象的生命周期内保持有效。 id表单只表示对象符合协议。

当表视图控制器创建详细信息视图控制器时,它将自己设置为委托。