【问题标题】:using segmented control使用分段控制
【发布时间】:2012-09-01 10:10:59
【问题描述】:

好的,我有一个选项卡式视图,所以有两个视图控制器。在一个视图控制器中,我有一个分段控件,并且要知道选择了哪个段,我有一个连接到它的操作。像这样:

-(IBAction)selectAngle:(id)sender{
    clickedSegment = [myAngleType selectedSegmentIndex];
}

这里的clickedSegment 是一个整数,我已在我的标题中作为属性公开。现在我想在我的另一个视图控制器中使用这个clickedSegment 的值,但是每当我创建那个VC(分段控制器)的实例并尝试使用clickedSegment 时,无论我是否总是得到0 作为值选择其他段 1 或 2。它始终为零。我哪里错了?

【问题讨论】:

    标签: iphone objective-c xcode cocoa-touch


    【解决方案1】:

    您的第二个视图控制器如何知道第一个视图控制器中的任何属性?这是不可能的,除非您明确获得对它的引用。

    // in second view controller
    FirstViewController *firstVC = 
       (FirstViewController*)[self.tabBarController.viewControllers objectAtIndex:0];
    
    NSLog(@"clicked segment: %d", firstVC.clickedSegment); // assuming int
    

    【讨论】:

    • 首先非常感谢!但我有一个简单的问题,为什么这不起作用? ...FirstViewController *firstVC = [[FirstViewController alloc]init];...然后只使用 firstVC.clickedSegment?
    • 我已经在我的标题中导入了 firstVC。
    • 因为您必须引用活动视图控制器,而不是创建新实例。从逻辑上讲,新实例的所有属性都是空的。
    【解决方案2】:

    你没有正确使用合成的setter,你应该这样设置:

    -(IBAction)selectAngle:(id)sender{
        self.clickedSegment = [myAngleType selectedSegmentIndex];
    }
    

    【讨论】:

    • 是的,但是在第一个 VC 中 clickedSegment 仍然为零,我记录了一个值,它确实发生了变化,但是然后我转到其他选项卡并且没有任何变化!零!-_-
    猜你喜欢
    • 2021-04-18
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多