gpt4 book ai didi

objective-c - 如果我以编程方式在viewDidLoad中添加控件,如何从其他方法访问它?

转载 作者:行者123 更新时间:2023-12-01 17:19:47 27 4
gpt4 key购买 nike

在我的主View Controller的viewDidLoad方法中,以编程方式创建一个分段控件,然后将其添加到导航控件的titleView中。

NSArray *seggieItems = [[NSArray alloc] initWithObjects:@"See Entire List",@"See Near Me", nil];
UISegmentedControl *seggie = [[UISegmentedControl alloc]initWithItems:seggieItems];
[seggie setSegmentedControlStyle:UISegmentedControlStyleBar];
[seggie setTintColor:[UIColor redColor]];
[seggie addTarget:self
action:@selector(seggieChanged:)
forControlEvents:UIControlEventValueChanged];


self.navigationItem.titleView = seggie;

但是,当我想从其他方法(例如viewWillAppear)访问此分段控件时,我不能-它是未声明的标识符。
    - (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[seggie setSelectedSegmentIndex:0]; //this should always be 0 for this view controller viewDidLoad method

}

如果我使用的是XIB,这将是没有问题的,因为我有一个IBOutlet,可以在任何地方使用。我尝试为我的Segmented控件创建一个属性,但是实例变量隐藏了局部变量,因此这一定是错误的方法。

最好的方法是什么?如果这是一个愚蠢的问题,我深表歉意-我对iOS还是相当陌生,目前大约读了几本书。我在Google或搜索StackOverflow上找不到答案。我将不胜感激,如果这真的很简单,我很想念,对不起。谢谢

最佳答案

使其成为属性是正确的方法。如果这样做,并得到描述的掩码警告,则可能仍在viewDidLoad方法中声明seggie变量。删除该声明,并始终引用self.seggie而不是seggie,就可以了。

通过声明,我的意思是这一行:

UISegmentedControl *seggie = [[UISegmentedControl alloc]initWithItems:seggieItems];    

它应该是
self.seggie = [[UISegmentedControl alloc]initWithItems:seggieItems];

关于objective-c - 如果我以编程方式在viewDidLoad中添加控件,如何从其他方法访问它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10561973/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com