【发布时间】:2012-02-27 22:19:47
【问题描述】:
我有一个 .xib,其中有一个具有 UISegmentedControl 的视图,并且我正在以编程方式添加它们。
在 appdelegate 中,我编写了添加工具栏的代码,并且有事件。
在工具栏上单击 UISegmentedControl 从给定的 mutablearray 加载。
我想要做的是:当我点击工具栏按钮时 UISegmentedControl 的值无法更改。
我写了一个添加 UISegment 及其值的方法。每次单击工具栏按钮时,我都会调用该方法。
UISegmentedControl的创建方法:
delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
NSMutableArray *itemArray = [[NSMutableArray alloc] init];
itemArrayforID = [[NSMutableArray alloc] init];
itemArrayforImage = [[NSMutableArray alloc] init];
bool isfirst = true;
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:itemArray];
[segmentedControl removeFromSuperview];
int temp =0;
NSLog(@"row count : %d",delegate.TopMenus.count);
for(int i=0;i<delegate.TopMenus.count;i++)
{
delegate.curTopsMenu = [delegate.TopMenus objectAtIndex:i];
NSLog(@"toolbar click : %@",delegate.toolbarbtnclick);
NSLog(@"parent_id : %@",[delegate.curTopsMenu valueForKey:@"parent_id"]);
if([delegate.toolbarbtnclick isEqualToString:[delegate.curTopsMenu valueForKey:@"parent_id"]])
{
int aaa = [[delegate.curTopsMenu valueForKey:@"top_menu_id"] intValue];
if(isfirst)
{
MenuLoadID = [NSString stringWithFormat:@"%d",aaa];
isfirst =false;
}
NSString *TEXT = [delegate.curTopsMenu valueForKey:@"top_menu_text"];
NSString *TEXTID = [delegate.curTopsMenu valueForKey:@"top_menu_id"];
NSString *SelectIMG = [delegate.curTopsMenu valueForKey:@"image_path"];
NSLog(@" TEXT : %@ and TEXTID : %@",TEXT,TEXTID);
[itemArray insertObject:TEXT atIndex:temp];
[itemArrayforID insertObject:TEXTID atIndex:temp];
[itemArrayforImage insertObject:SelectIMG atIndex:temp];
temp++;
}
}
segmentedControl = [[UISegmentedControl alloc] initWithItems:itemArray];
[segmentedControl removeFromSuperview];
segmentedControl.frame = CGRectMake(0, 100, 320, 40);
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
segmentedControl.selectedSegmentIndex = 0;
[segmentedControl addTarget:self action:@selector(changeSegment:) forControlEvents:UIControlEventValueChanged];
UIImage *segmentSelected = [[UIImage imageNamed:@"games-on.png"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
UIImage *segmentUnselected = [[UIImage imageNamed:@"games-ho.png"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected
forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setBackgroundImage:segmentSelected
forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[self.navigationController.view addSubview:segmentedControl];
[segmentedControl release];
segmentSelected = nil;
[itemArray release];
[self MenuRowCount];
工具栏按钮点击代码:
ViewController *VC = [[ViewController alloc] init];
[VC LoadTopMenuFromBottmClick];
【问题讨论】: