我已经实现了一个UISegmentControl作为我的detailViewController的rightBarButton。 此视图控制器显示从UITableView传递的信息。 这个UITableView的单元格填充了CoreData属性值。
我想要做的是让用户通过detailViewController在列表中上下移动。他们不必让用户必须返回rootViewController,而是可以通过UISegmentControl滚动浏览。
我目前在我的detailViewController.m
中有这个 - (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
// Setting up UISegmentedControl
// Segmented Control - Custom right bar button with a view
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:
[NSArray arrayWithObjects:
[UIImage imageNamed:@"arrowdown.png"],
[UIImage imageNamed:@"arrowup.png"],
nil]];
[segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
segmentedControl.frame = CGRectMake(0, 0, 75, 30);
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
segmentedControl.momentary = YES;
UIBarButtonItem *segmentBarItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
[segmentedControl release];
self.navigationItem.rightBarButtonItem = segmentBarItem;
[segmentBarItem release];
}
然后将其附加到以下方法,以检测轻敲控件。
- (void)segmentAction:(id)sender
{
UISegmentedControl* segCtl = sender;
// the segmented control was clicked, handle it here
if([segCtl selectedSegmentIndex]==0){
NSLog(@"You clicked the down arrow - the segment clicked was %d", [segCtl selectedSegmentIndex]);
}else {
NSLog(@"You clicked the up arrow - the segment clicked was %d", [segCtl selectedSegmentIndex]);
}
}
我也很好奇是否有人知道如何检测是否还有。因此,如果加载的音符位于第一个位置,则禁用向下箭头,如果加载的音符位于最后位置,则禁用向上箭头。这甚至可能吗?
非常感谢任何帮助。
答案 0 :(得分:1)
我建议你创建一个正式的协议 MyDataSource ,它提供了访问数据的方法。作为最低要求,必须有一种方法来获取指定索引的数据对象和对象的数量。
在DetailViewController中,您应该引用符合MyDataSource的对象。我建议你使用RootViewController实例作为DetailViewController的数据源。
您还应该跟踪DetailViewController中当前显示的对象的索引并适当地更新UI。