繁体   English   中英

Objective-C UIButton&viewDidLoad

[英]Objective-C UIButton&viewDidLoad

我是正在学习OC的新手。

但是现在,当我将插座按钮设置为我的viewcontroller的属性时,为了为其添加属性,当我在viewDidLoad编写一些方法时,发生了如下错误:

我唯一想做的就是设置outLetButton.currentTitle的属性

我的代码如下:

我的按钮没有错。

(void)viewDidLoad {

[super viewDidLoad];

/

NSMutableAttributedString * title = [[NSMutableString alloc] initWithString:self.OutletButton.currentTitle] ;

[title setAttributes:@{NSStrokeWidthAttributeName:@3.0,NSStrokeColorAttributeName:[self.OutletButton tintColor]} range:NSMakeRange(0, [title length])] ;

[self.OutletButton setAttributedTitle:title forState:UIControlStateNormal] ;

}

我使用中断调试,当我跳过[title setAttributes...] ,它崩溃了。

先抛出调用堆栈

0 CoreFoundation 0x000000010ba0b12b __exceptionPreprocess + 171

1个libobjc.A.dylib 0x000000010b09ff41 objc_exception_throw + 48

2 CoreFoundation 0x000000010ba8c024-[NSObject(NSObject)didNotRecognizeSelector:] + 132

3 CoreFoundation 0x000000010b98df78 转发 + 1432

4 CoreFoundation 0x000000010b98d958 _CF_forwarding_prep_0 + 120

5 UITextView 0x000000010a791106-[ViewController viewDidLoad] + 598

6 UIKit 0x000000010c03146c-[UIViewController loadViewIfRequired] + 1235

7 UIKit 0x000000010c0318b9-[UIViewController视图] + 27

8 UIKit 0x000000010befc7cf-[UIWindow addRootViewControllerViewIfPossible] + 122

9 UIKit 0x000000010befced7-[UIWindow _setHidden:forced:] + 294

10 UIKit 0x000000010bf0fe54-[UIWindow makeKeyAndVisible] + 42

11 UIKit 0x000000010be828b8-[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 4737

12 UIKit 0x000000010be87aeb-[UIApplication _runWithMainScene:transitionContext:completion:] + 1720

13 UIKit 0x000000010c2516f8 __111-[__ UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:] _ block_invoke + 924

14 UIKit 0x000000010c6274c8 + [_ UICanvas _enqueuePostSettingUpdateTransactionBlock:] + 153

15 UIKit 0x000000010c2512f1-[__ UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:] + 249

16 UIKit 0x000000010c251b6b-[__ UICanvasLifecycleMonitor_Compatability activateEventsOnly:withContext:completion:] + 696

17 UIKit 0x000000010cbcfa69 __82-[_ UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:] _ block_invoke + 262

18 UIKit 0x000000010cbcf922-[_ UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:] + 444

19 UIKit 0x000000010c8ac9c8 __125-[_ UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:] _ block_invoke + 221

20 UIKit 0x000000010caabb06 _performActionsWithDelayForTransitionContext + 100

21 UIKit 0x000000010c8ac88b-[_ UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:] + 231

22 UIKit 0x000000010c626b25-[_ UICanvas场景:didUpdateWithDiff:transitionContext:完成:] + 392

23 UIKit 0x000000010be8636a-[UIApplication工作区:didCreateScene:withTransitionContext:完成:] + 523

24 UIKit 0x000000010c461605-[UIApplicationSceneClientAgent场景:didInitializeWithEvent:完成:] + 369

25 FrontBoardServices 0x0000000110158cc0-[FBSSceneImpl _didCreateWithTransitionContext:completion:] + 338

26 FrontBoardServices 0x00000001101617b5 __56- [FBSWorkspace客户端:handleCreateScene:withCompletion:] _ block_invoke_2 + 235

27 libdispatch.dylib 0x000000010f3b733d _dispatch_client_callout + 8

28 libdispatch.dylib 0x000000010f3bc9f3 _dispatch_block_invoke_direct + 592

29 FrontBoardServices 0x000000011018d498 FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK + 24

30 FrontBoardServices 0x000000011018d14e-[FBSSerialQueue _performNext] + 464

31 FrontBoardServices 0x000000011018d6bd-[FBSSerialQueue _performNextFromRunLoopSource] + 45

32 CoreFoundation 0x000000010b9ae101 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17

33 CoreFoundation 0x000000010ba4df71 __CFRunLoopDoSource0 + 81

34 CoreFoundation 0x000000010b992a19 __CFRunLoopDoSources0 + 185

35 CoreFoundation 0x000000010b991fff __CFRunLoopRun + 1279

36 CoreFoundation 0x000000010b991889 CFRunLoopRunSpecific + 409

37 GraphicsServices 0x0000000110a219c6 GSEventRunModal + 62

38 UIKit 0x000000010be895d6 UIApplicationMain + 159

39 UITextView 0x000000010a7914df主+ 111

40 libdyld.dylib 0x000000010f433d81开始+ 1

41 ??? 0x0000000000000001 0x0 + 1

libc ++ abi.dylib:以类型为NSException的未捕获异常终止

问题是因为您要使用NSMutableString初始化NSMutableAttributedString ,然后更改其属性。

该代码使您可以初始化变量,但是NSMutableString不允许您添加属性,因此会崩溃。

代码应如下所示(将分配类更改为NSMutableAttributedString

NSMutableAttributedString * title = [[NSMutableAttributedString alloc] initWithString:self.OutletButton.currentTitle] ;

[title setAttributes:@{NSStrokeWidthAttributeName:@3.0,NSStrokeColorAttributeName:[self.OutletButton tintColor]} range:NSMakeRange(0, [title length])] ;

[self.OutletButton setAttributedTitle:title forState:UIControlStateNormal] ;

谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM